2012-06-27 112 views
9

这里是什么我的HTML看起来像一个基本观点:JQuery的绑定click事件检查框

<form> 
    <div id="part1"> 
    // some html form elements including checkboxes 
    </div> 
    <div id="part2"> 
    // more html code with more checkboxes 
    </div> 
    <div id=part2"> 
    // data table with numerous checkboxes built dynamically 
    </div 
</form> 

我需要做的是.click()事件的复选框绑定部分1,2,3 seperately。我试过这个$('#part1:checkbox').click(...)但这没有奏效。如果我使用$("form :checkbox").click(...)相同的点击事件绑定到所有复选框,而不仅仅是一组。我将如何分离这些?

回答

17

你快到了。你只需要一个空间给后代选择分开:

$('#part1 :checkbox').click(function(){ 
    // code goes here 
}); 

为了提高性能,您可能想使用此:

$('#part1 input[type=checkbox]').click(function(){ 
    // code goes here 
}); 
+0

呃..空间差异使mahalos – iJared

+0

如何使用输入[type = checkbox]提高性能? – iJared

+1

@Jared - 'input [type = checkbox]'是一个有效的CSS选择器。 checkbox':如果可能,jQuery将沿至['querySelectorAll'](https://developer.mozilla.org/en/DOM/Document.querySelectorAll),这比jQuery的自己的实现的'有效得多通过选择器。 –

1

或者您为所有复选框提供相同的类名并给出相应的div ID对于复选框也是如此,所以你可以使用下面的代码,

<input type="checkbox" class="checkall" id="part1">Part 1 

你的脚本是这样的。

$('.checkall').click(function() { 
if (this.checked == false) { 
$("." + $(this).attr("id")).hide(); 
} 
}); 
0

我有一个类似的问题,这个StackOverflow页面是我偶然发现的第一个答案,但并不真正满意它。我发现这篇文章https://www.kevinleary.net/jquery-checkbox-checked/有一个更好的解决方案。

$('input[name="subscribe"]').on('click', function(){ 
    if ($(this).is(':checked')) { 
     $('input[name="email"]').show(); 
    } 
    else { 
     $('input[name="email"]').hide(); 
    } 
});