2016-11-07 19 views
0

通过AJAX单选按钮改变/点击不工作

这里动态加载的头部上面的代码工作的

<head> 
    <link rel="stylesheet" type="text/css" href="templates/main.css"> 
    <link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css" rel="stylesheet"> 
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" 
    rel="stylesheet"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 

    <script src="js/main.js"></script> 
</head> 

$('.vp_names').on("change", "input[name='vp_names']", function(event) { 
 
\t \t alert('got here'); // NEVER FIRES \t \t 
 
})
<div class='vp_names'> 
 
    <input id="vp_names_1" checked name='vp_names' value='1' type='radio'/> 
 
    <label class="drinkcard-cc label_card male" for="vp_names_1">George</label> 
 
    <input id="vp_names_2" name='vp_names' value='2' type='radio'/> 
 
    <label class="drinkcard-cc label_card male" for="vp_names_2">Jungle</label> 
 
</div>

变化对我的所有其他输入/按钮在同一页面/加载。范围输入工作,其他无线电/复选框工作。我试过改变/点击。我已经尝试过:收音机和没有。我试着改变名称,改变选择器,改变父选择器,没有任何东西会让单选按钮触发。

** **更新

虽然没有弄清楚为什么它不工作,因为它以这种方式工作的代码的其他部分,将其更改为以下没有工作。所以如果你有类似的问题,试试这个。

$('#view_profile').on("change", ".vp_names", function(event) { 
    alert('got here'); 
} 

<input class='vp_names' id="vp_names_1" checked name='vp_names' value='1' type='radio'/> 
<label class="drinkcard-cc label_card male" for="vp_names_1">John</label> 

Removed class from parent div 

我仍然使用的view_profile的“袋子”,这是用于附连到经由AJAX动态加载的内容的方法。

** **解决方案

似乎被一个JS缓存问题罗布的建议。

+0

是否有错误?你在页面上有jQuery? – Tinsten

+0

'$未定义'表示在页面上没有jQuery。 – Tinsten

+0

没有错误,一切都已定义 –

回答

0

我觉得你的选择是问题。我甚至不确定input [name = ...]是否有效(不是我的无知证明它无效)。

给你想受影响的所有输入同一个类,然后从类中触发。

<input type="radio" class="vp_radio" ... /> 

$(document).ready(function(){ 
    $('.vp_radio').on('change', function(){ 
     //logic 
    }); 
}); 
+0

我对范围,按钮和复选框使用此选择器没有问题。但是,我什么都不知道,可能会做错事,这就是为什么我发布这个。我曾尝试给他们全班上课,但仍然无法工作。这非常奇怪,因为我有其他代码是相同的,除了在同一个加载的页面中的名称/位置,它是有效的。 –

+0

是否有任何东西登录您的控制台?看起来奇怪的是,这个元素根本不会在没有引发问题的情况下触发。 – rob

+0

我不知道为什么,我刚刚进去再试一次(良好的OLE健康检查) - 使用相同的风格,但更改为收音机上课,现在它的射击。不知道为什么它适用于某些人而不是其他人,但至少它现在正在工作! –

1

$("body").on("click","input[name='vp_names']" ,function(event) { 
 
    alert('got here'); // FIRES 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class='vp_names'> 
 
    <input id="vp_names_1" checked name='vp_names' value='1' type='radio'/> 
 
    <label class="drinkcard-cc label_card male" for="vp_names_1">George</label> 
 
    <input id="vp_names_2" name='vp_names' value='2' type='radio'/> 
 
    <label class="drinkcard-cc label_card male" for="vp_names_2">Jungle</label> 
 
</div>

+0

你用ajax加载过吗? –

0

看来,如果你不包括jQuery脚本。你的代码片段中没有jQuery。此添加到HTML页面:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

已加入问题 –