jQuery单击操作不会触发onclick属性

jQuery单击操作不会触发onclick属性,jquery,javascript-events,event-handling,jquery-click-event,Jquery,Javascript Events,Event Handling,Jquery Click Event,我在获取单击所有搜索匹配复选框的函数时遇到问题。click事件似乎触发,但未选中任何复选框,也未调用myFunc() 当手动单击每个复选框时,它可以很好地工作,但是谁想用40多个复选框来完成这项工作呢?不是我的用户。 您可能想知道为什么我使用div onclick而不是直接在输入复选框上。这是因为我想给我的用户一个比一个小复选框更大的点击区域 我想为我的用户提供一个超链接,以选择多个与特定属性值匹配的复选框 我需要快速解决,因为我没时间了 HTML 编辑 当我从div更改为label时,我不必更

我在获取单击所有搜索匹配复选框的函数时遇到问题。click事件似乎触发,但未选中任何复选框,也未调用myFunc()

当手动单击每个复选框时,它可以很好地工作,但是谁想用40多个复选框来完成这项工作呢?不是我的用户。
您可能想知道为什么我使用div onclick而不是直接在输入复选框上。这是因为我想给我的用户一个比一个小复选框更大的点击区域

我想为我的用户提供一个超链接,以选择多个与特定属性值匹配的复选框

我需要快速解决,因为我没时间了

HTML

编辑
当我从div更改为label时,我不必更正复选框状态。div或block元素肯定有问题。
我还从*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 ?
  });
}

this.parentNode.click
应该是
this.parentNode.click()


此.parentNode.click
只是方法对象。调用它不会触发div的click事件。必须在
单击之后添加括号,否则事件将不会触发。

this.parentNode.click
应该是
this.parentNode.click()


此.parentNode.click
只是方法对象。调用它不会触发div的click事件。必须在
click
之后添加大括号,否则事件将不会触发。

要跟进Pointy的评论,请使用以下命令:

$(document).ready(function(){
  $('.theAnchorTagClass').click(function(){
    //Code to check all boxes here or do whatever else you need...
  });
});

只要用类似的内容替换您试图捕获单击事件的任何元素。

要跟进Pointy的评论,请使用以下内容:

$(document).ready(function(){
  $('.theAnchorTagClass').click(function(){
    //Code to check all boxes here or do whatever else you need...
  });
});

只需将类似的内容替换为您试图捕获单击事件的任何元素。

与其尝试使用事件更改复选框的值,我将做两件事:

  • 要给用户一个较大的单击区域,请使用
    标签
    元素,而不是
    div
    <代码>标签
  • 元素直接受浏览器支持,您无需做任何事情即可使其正常工作。有两种方法可以使用它们:

    <label><input type='checkbox'>Foo</label>
    
    …或清除容器中的所有复选框(对那些“全部”或“无”链接有用):


    与其尝试使用事件来更改复选框的值,我将做两件事:

  • 要给用户一个较大的单击区域,请使用
    标签
    元素,而不是
    div
    <代码>标签元素直接受浏览器支持,您无需做任何事情即可使其正常工作。有两种方法可以使用它们:

    <label><input type='checkbox'>Foo</label>
    
    …或清除容器中的所有复选框(对那些“全部”或“无”链接有用):


  • 刚刚解决了这样一个问题,与我想要触发的onclick属性中类似于ASP.net的js代码呈现的checkbox事件处理程序有关。第一次尝试显式调用jqueryclick事件,但过了一段时间,我意识到这样做不会成功。因此,对我有效的解决方案是:

    someOtherObject.click(eval($('input').attr('onclick')));
    

    干杯。

    刚刚解决了这样一个问题,与我想要触发的onclick属性中类似ASP.net的js代码呈现的checkbox事件处理程序有关。第一次尝试显式调用jqueryclick事件,但过了一段时间,我意识到这样做不会成功。因此,对我有效的解决方案是:

    someOtherObject.click(eval($('input').attr('onclick')));
    

    干杯。

    您可能应该用jQuery绑定事件处理程序,因为您正在使用它。老式的“onclick”属性在2010年通常会被弃用。该声明的来源是什么?此外,我不能全局使用bind,因为每个div onclick都是唯一的,并且它是从非jquery部分生成的。您可能应该用jquery绑定事件处理程序,因为您无论如何都在使用它。老式的“onclick”属性在2010年通常会被弃用。该声明的来源是什么?此外,我不能全局使用bind,因为每个div onclick都是唯一的,并且它是从非jquery部分生成的。不查找选择器,而且在批量检查链接上没有类。不查找选择器,而且在批量检查链接上没有类。Woooooooo,我在stackoverflow中的第一篇帖子:)wooohoo,我在stackoverflow中的第一篇帖子:)
    $('#container input[type=checkbox]').attr("checked", false); // or true, of course
    
    someOtherObject.click(eval($('input').attr('onclick')));