我有問題得到一個功能,點擊所有搜索匹配的複選框。點擊事件似乎觸發,但沒有複選框被檢查,也沒有調用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