代码之家  ›  专栏  ›  技术社区  ›  blu

触发器元素的onclick方法与JQuery[ASP.NET]

  •  1
  • blu  · 技术社区  · 14 年前

    标记:

    <div id="foo">
        <ul>
            <li>
                <input id="..." 
                       type="checkbox" 
                       name="ctl00$MainContent$FooList$0"    
    
                       onclick="javascript:setTimeout(
                       '__doPostBack(\'ctl00$MainContent$FooList$0\',\'\')', 0)" />
    
                <label ...>...</label>
            </li>
            ...
        </ul>
    </div>
    

    我想在单击父LI时触发在复选框上呈现的JavaScript。到目前为止,我掌握的情况如下:

    $("#foo li").click(function() {
        $(this).find("input:eq(0)").trigger("click");
    });
    

    这将在FF3.x中触发回发,但不会触发codebehind中的事件处理程序。在IE7中,出现了一个脚本错误,浏览器只是在那里挂了一会儿,然后重新加载页面。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Nick Craver    14 年前

    我想试试这个:

    $("#foo li").click(function() {
        $(this).find("input:eq(0)").triggerHandler("click");
    });
    

    子对象上的触发器将跳转到父对象,在这种情况下会导致循环,因为父对象单击会再次触发子对象单击。Firefox有时会识别并停止这一点,但结果是你的复选框被选中,它冒泡,它被取消选中等等,它不会启动,因为检查状态确实没有改变。

    .triggerHandler() 不过,它不会冒泡,可能会解决您的问题(除非发生另一个脚本错误!)。作为一般规则,在触发子级上的处理程序时,尤其是在触发子级上会冒泡的同一事件时,请使用此选项。