У меня проблемы с получением функции, которая нажимает все флажки поиска.Кажется, что событие click срабатывает, но ни один флажок не устанавливается, ни myFunc () не вызывается.
Он отлично работает, когда нажимает каждый флажок вручную, но кто хочет сделать это с 40+ флажками - не мои пользователи.
Вы можете задаться вопросом, почему я использую div-onclick, а не прямо на поле ввода.Это потому, что я хочу предоставить своим пользователям область больше , на которую можно щелкнуть, чем маленький флажок.
Я хочу предоставить своим пользователям одну гиперссылку для выбора нескольких флажков, соответствующих определенному значению атрибута.(s).
Мне нужно быстрое решение, поскольку у меня нет времени.
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 на label , мне не пришлось исправлять состояние флажка. div или block-element должны иметь какую-то проблему там.
Я также удалил onclick из * div * s, что означало, что я был в состоянии предназначаться для флажков непосредственно и мог изменить их значения 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 ?
});
}