我有这段代码
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 oe FF 2进行测试),Opera(presto),Chrome(webkit)并且不能在IE上运行。 当我单击选择框中的选项时,没有任何反应。似乎没有任何事件简单地启动,没有! 题。我怎么解决呢? 目标:(根据该代码)使警报出现 顺便说一句:为什么会这样? 额外注意:开发人员工具声明不涉及错误。
答案 0 :(得分:1)
为什么会这样?
已经在SO上讨论过几次这个问题的根本原因:
较早版本的IE根本不支持click
元素上的<option>
个事件。相反,您必须收听<select>
的{{1}}(或change
事件:
click)
关于您的具体任务,只有在选择该选项时才显示$(selectBox).change(function () {
});
(或您的实际代码已执行),您可以测试alert
中是否已选择option
事件:
change
如果您没有准备好var option = new Option(thatOption.text, thatOption.value);
$(selectBox).change(function () {
if ($(option).is(':selected')) {
alert('clicked');
}
});
变量,则可以使用option
的值进行测试:
<select>
另外,要避开$(selectBox).change(function () {
if ($(this).val() === 'something') {
alert();
}
});
和try..catch
,您可以执行以下操作:
Stupid IE doesn't know how to follow the spec