【问题标题】:Trying to invoke onchange method set by jQuery尝试调用 jQuery 设置的 onchange 方法
【发布时间】:2017-04-04 15:52:20
【问题描述】:

在我的代码中,我在这里的复选框上设置了一个更改监听器

  $(".section").change(function() { 
       if($(this).is(":checked")) {
        $("." + this.id).show();
        ...

现在我正在尝试对复选框进行“代码驱动”点击,我有

  $(".secTitle").click(function(e) {
    var elem = this;
    while(elem) {
      if (elem.className && elem.className.indexOf ('DOC_SECTION') != -1) {
        var clzes = elem.className.split(" ");
        var clzIdx = 1;
        if (elem.getAttribute('closeSecClassIdx')) {
          clzIdx = parseInt(elem.getAttribute('closeSecClassIdx'));
        }
        var chk = document.getElementById(clzes[clzIdx]);
        chk.checked = false;
        alert(chk.onchange);
        //chk.changed();
        break;
      }
      else {
        elem = elem.parentNode;
      }
    }
  });

我知道我有正确的元素,因为chk.checked = false; 工作正常。之后,我尝试调用之前设置的更改方法,但我的警报显示为“未定义”。

【问题讨论】:

标签: javascript jquery html dom-events


【解决方案1】:

您可以通过调用$(chk).change() 来触发change 事件。下面我创建了一个小原型,显示绑定到change 事件并调用它。

jQuery(function($) {
    // bind to the change event
    $("input").change(function() {
        console.log('change triggered!');
    });
    
    // now trigger it
    $("input").change();    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-05
    • 2014-03-26
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 2023-03-08
    • 2014-12-06
    • 2017-05-07
    相关资源
    最近更新 更多