jQuery .on()方法在Chrome中不起作用(但在IE和FF中)

时间:2013-03-22 20:52:57

标签: javascript jquery events google-chrome dom

我有jQuery代码,可以在IE 9和IE中执行。 FF 19,但在Chrome版本25.0.1364.172中似乎无法正常工作。使用jQuery 1.7.1

我有2个下拉列表和一个按钮。在初始页面加载时,单击事件处理程序通过jQuery连接到ddlists和按钮中的选项元素。在IE和FF中,事件处理程序触发所有3个事件。效果很好。但是,在Chrome中,只会触发按钮事件处理程序 - 而不是选择选项的单击事件处理程序。

 $(document).ready(function () {

    $('#ddlCategory').on('click', 'option', function (event) {

        // BREAKPOINT ON FIRST LINE IN THIS BLOCK NEVER HITS WHILE IN CHROME BUT DOES IN IE & FF
        if ($(event.target).val() == -1)
            return;
       more code...
    });

    $('#ddlSubCategory').on('click', 'option', function (event) {
        ResetSubCatOptionDisplay();
        var selectedId = $(event.target).val();           
        more code....
       // BREAKPOINT ON FIRST LINE IN THIS BLOCK NEVER HITS WHILE IN CHROME BUT DOES IN IE & FF
    });

    $('#btnAddSubCat').click(function (event) {
        ManageWarningDisplay(false, "");

        more code...
        // BREAKPOINT ALWAYS HITS ON FIRST LINE IN THIS BLOCK FOR ALL 3 BROWSERS
     });

    more code ..... 

});

我想也许'on()'功能在Chrome中不起作用,所以我也尝试使用以下语法,但同样的结果。似乎没有连接处理程序,因为断点没有像Chrome开发工具那样在按钮的事件处理程序中点击。

    $('#ddlCategory option').click(function (event) { ...

认为Chrome可能不喜欢“选项”元素上的点击事件,我想过尝试将事件处理程序连接到选择元素本身,但是即使用户单击向下箭头它也会触发。

我使用事件的原因:我不想使用'onchange'事件,因为当用户点击select中的唯一选项时(如果在某些情况下只有一个选项)它不会触发,将有)。另外,对于ddlSubCategory控件,我将在运行时动态删除并在客户端上添加选项元素,因此我需要使用$()。on()或$()。live()(后者已弃用)委派未来的选择。

任何人对此都有任何想法???

1 个答案:

答案 0 :(得分:3)

点击事件对选项无效。它虽然选择有效,所以这是解决方法:

$("select#yourSelect").change(function(){
    process($(this).children(":selected").html());
});