代码之家  ›  专栏  ›  技术社区  ›  DA.

未通过更改选定属性的其他函数触发选择时的jQuery更改事件

  •  5
  • DA.  · 技术社区  · 16 年前

    <select multiple="multiple" id="myID" name="myName">
        <option value="blue">blue</option>
        <option value="red">red</option>
        <option value="green">green</option>                
    </select>
    

    $('select')
        .change(function(){
            alert("Change Event Triggered On:" + $(this).attr("value"));
        })
    

    这是可行的。如果单击multiselect中的某个项目,则会触发警报。

    但是,当我通过jQuery从选择菜单中“选择”一个元素时,如下所示:

    $('#myOtherSelector')
        .click(function(){
            var $matchingOption = [goes and selects the specific OPTION to toggle]
            if ($matchingOption.attr("selected")){
                $matchingOption.removeAttr("selected")
            }else{
        $matchingOption.attr("selected","selected");
            }
        })
    

    该脚本的工作原理是更改选定的属性并直观地更新选项列表,但是在该场景中不会触发onchange事件。

    为什么呢?

    1 回复  |  直到 16 年前
        1
  •  11
  •   Pointy    16 年前

    用这样的代码更改元素不会触发事件处理程序。但是,您可以自己做:

    else {
      $matchingOption.attr('selected', 'selected').trigger('change');
    }