Javascript 未激发附加到选项节点的事件

Javascript 未激发附加到选项节点的事件,javascript,events,option,Javascript,Events,Option,我有这个密码 var option = new Option(thatOption.text, thatOption.value); $(option).click( function(){ //Sorry cannot reveal what is here I'll just use this so that it can be referenced alert("clicked"); }

我有这个密码

    var option = new Option(thatOption.text, thatOption.value);
    $(option).click( function(){
                //Sorry cannot reveal what is here I'll just use this so that it can be referenced
                alert("clicked");
            }
        );

    try{
        selectBox.add(option,null);
    }catch(e){
        // Stupid IE doesn't know how to follow the spec
        selectBox.add(option);
    }
此代码在FF>2(不需要测试FF 1和FF 2)、Opera(presto)、Chrome(webkit)中工作,并且不适用于IE。 当我单击选择框中的选项时,不会发生任何事情。似乎没有什么活动是简单地启动的,什么都没有
问题。我如何解决这个问题?
目标:(根据该代码)使警报出现
顺便问一下:为什么会发生这种情况?
额外注意:开发者工具声明没有涉及错误

为什么会这样

这一问题的根本原因已经讨论了几次,因此:

早期版本的IE根本不支持
元素上的
单击事件。相反,您必须收听
更改
(或
单击)
事件:

$(selectBox).change(function () {
});
var option = new Option(thatOption.text, thatOption.value);

$(selectBox).change(function () {
    if ($(option).is(':selected')) {
        alert('clicked');
    }
});

关于您的特定任务,要仅在选择该选项时显示
警报
(或实际代码执行),您可以测试
选项
是否在
更改
事件中被选中:

$(selectBox).change(function () {
});
var option = new Option(thatOption.text, thatOption.value);

$(selectBox).change(function () {
    if ($(option).is(':selected')) {
        alert('clicked');
    }
});
如果准备就绪时没有
选项
变量,可以改为使用
的值进行测试:


此外,为了避免出现
try..catch
愚蠢的IE不知道如何遵循规范的情况,您可以只执行以下操作:

$(selectBox).append(option);

您发布的代码似乎没有问题。因此,您必须提供我们可以调试的完整工作代码。您可以使用将代码的实时版本联机。无论如何,根据W3c:单击选项标记是有效的。第1部分:是的。。。现在我注意到了。。。当我进行研究时,我使用了错误的关键字。第二部分:我有一个规范要遵循。规范规定,单击选项时,而不是选择选项时,将进行单击。我想规格必须更改,以便我可以为IE做到这一点。请注意,只有IE没有遵循该代码。第三部分:我赞成尽量少使用外部库。jQuery运行得非常好,但我更喜欢使用原生js API而不是库API(tastes)的源代码。@brunoais,我在这里编写了一个变通方法来模拟点击,我认为它可以帮助您。您可以在这里查看:@Chococroc谢谢。顺便说一句,这是我以不同的方式解决的问题。我的解决方式是,它不能作为这个问题的答案。