<ul id='theList'>
<li><input type='radio' name='foo' val='1' /></li>
<li><input type='radio' name='foo' val='2' /></li>
<li><input type='radio' name='foo' val='3' /></li>
<li><input type='radio' name='foo' val='4' /></li>
<li><input type='radio' name='foo' val='5' /></li>
</ul>
我想在选择一些无线电输入时显示警报('hi')。 我试过这个:
$(function(){
$('#theList input[type="radio"]').live('change', function(){
alert('hi');
});
});
它不起作用。 (我使用直播,因为我通过ajax更改了ul的内容)
答案 0 :(得分:1)
使用.die(),这样就不会将多个点击事件堆叠到无线电中。此外,它是您需要的“点击”事件,而不是“更改”。
$(function(){
$('#theList input[type="radio"]').die().live('click', function(){
alert('hi');
});
});
答案 1 :(得分:1)
你的'change'事件处理程序可能没有被正确绑定。当您动态更改要绑定的元素时,live()并不总是有效。
只是为了测试,试试ajaxComplete()
类似的东西:
$('#theList').ajaxComplete(function(){
<!-- attach change event -->
});
答案 2 :(得分:0)
你也可以在你的ajax中选中复选框时使用.trigger()。
我编写了一个示例,点击链接会触发更改:
<强>的jQuery 强>
$('#click').click(function(){
$('#theList input[val="2"]').click().trigger('contentchanged')
});
$('#theList input[type="radio"]').bind('contentchanged', function() {
alert('hi');
});
在jsfiddle上查看它 - http://jsfiddle.net/HQs8g/
希望这有助于Alex
答案 3 :(得分:0)
您可以改为将事件绑定到父元素,这样,无论标签是第一次加载还是来自服务器添加,它都将捕获内部任何input[type="radio"]
标签的change事件。到DOM:
$(function(){
$('#theList').on('change', 'input[type="radio"]', function(){
console.log("hi: ", $(this).val())
});
});
此外,请注意,您的输入应设置其value
属性,而不是val
。例如:
<input type='radio' name='foo' value='1' />
答案 4 :(得分:0)
您可以尝试这个简单的jquery事件,该事件在用户单击单选按钮时触发。
$(document).on('change', '#theList li input', function() {
alert('hi');
});
只要有人单击单选按钮,就会触发此事件