jQuery击行动不触击属性
-
26-09-2019 - |
题
我有问题得到一个功能,点击所有的搜索相匹配的选框。点击事件似乎火,但没有选择框得到检查,也不是myFunc()呼吁。
它完美的作品时,点击每一个框手动,但谁愿意这样做的40+框-不是我的用户。
你可能想知道为什么我使用一个div-击,而不是直接输入上的选项。那是因为我想要给我用一个 大 区域的点击超过一个小的选项。
我想要提供我的用户有一个单一的超级链接可以选择多的选择框符合某些特性的价值(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 要 标签 然后我没有正确的框状态。一个 div 或框件必须有一些问题。
我还删除了击从*格*s,这意味着我能目标的框直接并可能改变其身份的价值观仅仅是*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 ?
});
}
解决方案
而不是试图利用该事件为改变的价值框,我想做两件事:
得到用户的一大区域的点击,使用一个
label
元素,不是一个div
.label
元的直接支持通过浏览器,你不必做任何事来使他们的工作。有两种方式来使用它们:<label><input type='checkbox'>Foo</label>
或
<input type='checkbox' id='chk1'><label for='chk1'>Foo</label>
前者是因为你没有到使用Id(它必须是完全独特的网页,因此它开始越来越成为一个痛苦);后者是很好标记的情况下,你不能拥有的
input
是一个孩子的label
无论出于何种原因。如果你需要改变国家代码,改变的状态,而不是直接通过试图的触发事件。例如,如果我想要改变态的框
chk1
, 我只是这样做:$('#chk1').attr("checked", true); // or false, of course
...或清除所有的选择框在一个容器(用于那些"所有"或"无"链接):
$('#container input[type=checkbox]').attr("checked", false); // or true, of course
其他提示
就解决了这样的问题,涉及到由ASP.net在onclick属性呈现类似的js代码复选框的事件处理程序,我想触发。首先试着用显式调用jQuery的单击事件,但经过一段时间才意识到,我是不会成功的这种方式。所以这对我工作的解决方案是:
someOtherObject.click(eval($('input').attr('onclick')));
干杯。
this.parentNode.click
应this.parentNode.click()
。
this.parentNode.click
只是该方法的对象。调用该函数将不火的div的单击事件。您必须click
后加括号,否则事件不会火。
要跟进尖尖的评论,请使用此:
$(document).ready(function(){
$('.theAnchorTagClass').click(function(){
//Code to check all boxes here or do whatever else you need...
});
});
刚刚替补类似的东西,不管是什么元素是你想捕获点击事件。