附加到Option节点的事件未被触发

时间:2011-10-13 20:41:08

标签: 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");
            }
        );

    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上运行。 当我单击选择框中的选项时,没有任何反应。似乎没有任何事件简单地启动,没有! 题。我怎么解决呢? 目标:(根据该代码)使警报出现 顺便说一句:为什么会这样? 额外注意:开发人员工具声明不涉及错误。

1 个答案:

答案 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