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

Javascript jQuery.on()方法在Chrome中不起作用(但在IE&;FF中起作用),javascript,jquery,events,google-chrome,dom,Javascript,Jquery,Events,Google Chrome,Dom,我有jQuery代码,在IE 9和FF 19中都可以很好地执行,但在Chrome版本25.0.1364.172中似乎不能正常工作。使用jquery1.7.1 我有两个下拉列表和一个按钮。在初始页面加载时,单击事件处理程序通过jQuery连接到DDList和按钮中的选项元素。在IE和FF中,事件处理程序为所有3个事件触发。效果很好。然而,在Chrome中,只有按钮事件处理程序被触发,而不是选择选项的点击事件处理程序 $(document).ready(function () { $('

我有jQuery代码,在IE 9和FF 19中都可以很好地执行,但在Chrome版本25.0.1364.172中似乎不能正常工作。使用jquery1.7.1

我有两个下拉列表和一个按钮。在初始页面加载时,单击事件处理程序通过jQuery连接到DDList和按钮中的选项元素。在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可能不喜欢“option”元素上的单击事件,我考虑尝试将事件处理程序连接到选择元素本身,但即使用户单击向下箭头,它也会触发

我使用事件的原因:我不想使用“onchange”事件,因为当用户单击select中的one-and-only选项时它不会触发(如果在某些情况下只有一个选项,则会触发)。另外,对于ddlSubCategory控件,我将在运行时在客户端上动态删除并向其添加选项元素,因此我需要使用$().on()或$().live()(后者已弃用)来委托给将来的选项


有人对此有什么想法吗?

单击事件对选项无效。但它在select上有效,因此这是解决方法:

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

你能做一个js提琴吗?为什么在option元素上有一个click事件而不是包含它的select上的change事件?此外,页面加载中是否存在所有这些选项?Chrome中的选项不会触发单击事件。您应该使用
change
事件作为选项,而不是单击事件。正如我在原始文章底部所解释的,我没有在select本身上使用change事件,因为如果select中只有一个选项(有时可能会有),则不会触发更改事件。即使未单击某个选项,选择上的单击事件也会触发。不确定解决方案是什么。因此,Chrome不会像IE和FF那样为选项元素引发单击事件。因此,解决方案是在选择上使用更改事件,然后确保存在默认值“-进行选择--”如果只有一个有效选项可供选择,则该选项始终可用(单击)变更事件将触发。是的-尽管有一个问题:怎么可能只有一个选项?我的意思是,在这种情况下,你不应该根本不提供这个选项,或者默认选择它吗?根据需求,由于项目是从下拉列表中选择的,它们将从列表中动态删除。基于这个答案,我在Chrome wa中的问题我选择将文本捕获到一个变量中:`var opt=jQuery(this).children(“:selected”).text();