我有问题得到一个功能,点击所有搜索匹配的复选框。点击事件似乎触发,但没有复选框被检查,也没有调用myFunc()。jQuery的点击操作不会触发onclick属性
当手动点击每个复选框时,它完美地工作,但谁想要用40多个复选框来完成 - 而不是我的用户。
您可能想知道为什么我使用div-onclick而不是直接在输入复选框上。这是因为我想给我的用户一个较大的区域点击比一个小复选框。
我想为我的用户提供一个超链接来选择与某些属性值匹配的多个复选框。
我需要快速解决方案,因为我没时间了。
HTML
<div id="container">
<a href="#" onclick="clickAndCheckAllMatch('search for this text');return false;">some text</a>
<div id="*actual_ID*" onclick="myFunc(a, b, c, d);">
<input type="checkbox" id="book-*actual_ID*" onclick="this.parentNode.click;return false;">
</div>
</div>
JS
function myFunc(a, b, c, d) {
// does stuff
}
function clickAndCheckAllMatch(value) {
$('div[onclick*='+value+']').each(function(idx,e){
$('book-'+this.id).click();
}
编辑
当我从DIV到标签然后我没有纠正复选框状态改变。 A div或块元素必须有一些问题。
我也从* div * s中删除了onclick,这意味着我能够直接定位复选框,并可以将它们的ID值更改为* actual_ID *。
function clickAndCheckAllMatch(value) {
$('input[onclick*='+value+']').each(function(idx,e){
// e == this
$(this)[0].click();
if ($(this).attr('disabled')) {
//do nothing
} else {
if ($(this).attr('checked')) {
//do nothing
} else {
$(this)[0].click(); // only one checkbox per ID
}
}
});
}
function CheckAll() {
$('#container input[type=checkbox]:not(:checked)').each(function(idx,e){
$(this).click(); // notice the difference ?
});
}
您可能应该将您的事件处理程序与jQuery绑定,因为您仍在使用它。老式的“onclick”属性在2010年通常会弃用。 – Pointy 2010-09-29 13:38:09
索赔的来源? 除了我不能全局使用绑定,因为每个div onclick都是唯一的,并且它是从非jquery部分生成的。 – Kim 2010-09-29 21:52:30