0

好的。没有人在听我说话,所以我将尝试通过向您展示可以执行我想要的工作的代码来重新表述这个问题,但不是以我想要的方式。

注意:我不是在问如何做到这一点。我问的更像是……最好的方法是什么……

// 首先我需要正确的值
$select.find("option:selected").prop("selected", false);
$select.find("option:first").prop("selected", true);

// 现在我需要触发事件
$select.trigger("改变");

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

请不要告诉我任何你希望从事前端工作 10 年的人知道的事情。

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

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

基本上,我想做的是说

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

但这真的行不通。我的意思是,它有点,但它似乎并没有触发选择上的更改事件......所以我想我实际上应该做一些更像......

$select.triggerEvent(新事件({
    类型:“改变”,
    目标:$选项
});

但这不可能。

4

3 回答 3

1

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

$select.val($select.find('option:first').val());
于 2012-11-20T19:01:14.957 回答
0

您可以使用该.attr方法

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

使用.val()选择

var $option = $select.find("option:first").val();
$select.val($option);
于 2012-11-20T19:06:23.490 回答
0

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

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

从语义上讲,这是将选项设置为选中的正确方法,它似乎也是自 1.6 以来在 jQuery 中设置属性的正确方法。

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

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

如果您需要在您的选择上触发更改事件,您可以这样做:

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

这是一个工作示例

如果您需要一行代码,您可以通过某些方式扩展 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);
于 2012-11-20T19:08:04.457 回答