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。
当我单击选择框中的选项时,不会发生任何事情。似乎没有什么活动是简单地启动的,什么都没有问题。我如何解决这个问题?
目标:(根据该代码)使警报出现
顺便问一下:为什么会发生这种情况?
额外注意:开发者工具声明没有涉及错误 为什么会这样 这一问题的根本原因已经讨论了几次,因此:
元素上的单击事件。相反,您必须收听
的更改(或单击)
事件:
$(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谢谢。顺便说一句,这是我以不同的方式解决的问题。我的解决方式是,它不能作为这个问题的答案。