以编程方式更改选择选项事件

时间:2012-11-20 19:00:02

标签: javascript jquery

确定。没有人在听我的话,所以我会试着通过向你展示我想要的工作代码来重新解释这个问题,但不是按照我想要的方式。

注意:我不是在问这个怎么做。我问更多......最好的方式......

// First I need the proper value
$select.find("option:selected").prop("selected", false);
$select.find("option:first").prop("selected", true);

// Now I need the event to fire
$select.trigger("change");

我想在一行中这样做......就像这个问题的最后一行代码一样。

请不要告诉我任何你会期待10年前做过前端工作的人知道的事情。

原文 - 根据以下内容不要回答

真的不一定是jQuery,但我正在使用它,所以它也可能是。

基本上,我想做的是说

var $option = $select.find("option:first");
$option.trigger("click");

但这并没有真正起作用。我的意思是,它确实如此,但它似乎并没有激发选择中的变化事件...所以我认为我应该做更像是......

$select.triggerEvent(new Event({
    type : "change",
    target : $option
});

但这不可能是正确的。

3 个答案:

答案 0 :(得分:1)

使用.val()更改select下拉列表的值:

$select.val($select.find('option:first').val());

答案 1 :(得分:0)

您可以使用.attr方法

var $option = $select.find("option:first");
$option.attr('selected', true); 

使用.val()进行选择

var $option = $select.find("option:first").val();
$select.val($option);

答案 2 :(得分:0)

您可以使用prop()jQuery方法,如下所示:

$select.find('option:first').prop('selected',true);

semantically这是将选项设置为选中的正确方法,它似乎也是set properties in jQuery since 1.6的正确方法。

如果你在1.6之前使用jQuery ,你应该这样做:

$select.find('option:first').attr('selected',true);

如果您需要在选择中触发更改事件,则可以执行以下操作:

$select.find('option:first').prop('selected',true);
$select.change();

这是a working example

如果你需要一行,你可以用某种方式扩展jQuery (不是经过测试的代码)

;(function($){
    $.fn.changeToOption = function(n) {

        var option;

        option = this.find('option').eq(n);

        if (option.prop('selected',true)) {
            this.change();
        }

        return this;

    }
})(jQuery)

然后简单地说:

$select.changeToOption(0);