jQuery - 单击链接时更改下拉列表的值

时间:2013-09-25 19:59:53

标签: javascript jquery html

我在点击链接时尝试更改下拉列表的值。我已经完成了尽职调查,并相信这可以通过'道具'来完成..但我不确定如何使用道具与我的特定例子。我到目前为止使用的代码是......:

var $select = $('#finder-3--16');
$('a[href="#yearselect"]').click(function () {
    $select.val( $(this).data('select') );
});

单击链接时,它会设置值但不会更改它(因此不会触发绑定到onchange的事件)。链接的一个例子可以在下面看到......:

<a href="#yearselect" data-select="125921">2009</a>

我相信我必须以某种方式返回该值,然后使用它,但不知道该怎么做。任何帮助将不胜感激!

onchange功能可以在这里看到:

onChange: function(event)
{
    var select     = Event.element(event);
    var parentId   = select.value;
    var dropdownId = 0;

    /* should load next element's options only if current is not the last one */
    for (var i = 0; i < this.selects.length; i++){
        if (this.selects[i].id == select.id && i != this.selects.length-1){
            var selectToReload = this.selects[i + 1];
            if (selectToReload){
                dropdownId = selectToReload.id.substr(selectToReload.id.search('--') + 2);
            }
            break;
        }
    }
}

谢谢!

5 个答案:

答案 0 :(得分:1)

如果您询问与select更改绑定的事件,请尝试

$select.val( $(this).data('select') ).change();

.trigger('change')

它将触发更改事件,该事件将调用您的更改回调..

答案 1 :(得分:1)

试试这个:

var $select = $('#finder-3--16');
$('a[href="#yearselect"]').click(function () {
    $select.val( $(this).attr('data-select') );
});

答案 2 :(得分:1)

更新值

后触发更改事件
var $select = $('#finder-3--16');
$('a[href="#yearselect"]').click(function () {
    $select.val( $(this).data('select') );
    $select.trigger('change');
});

答案 3 :(得分:1)

注意:此更新已触发更改事件。

我创造了一个小提示,向你展示一个有效的例子。

http://jsfiddle.net/Ru3Md/10/

简而言之,您需要的是:

$(function() {
$('a').on('click',function(event) {

    var txt =  $(this).text();

    $('#mySelect option')
.filter(function() { return $.trim( $(this).text() ) == txt; })
.attr('selected',true).change();

})

});

答案 4 :(得分:1)

听起来您没有在value标记上定义<option>属性。这样做:

<select id="finder-3--16">
  <option value="125921">whatever label you want</option>
</select>

现在你现有的jQuery应该可以工作。

看到这个小提琴:http://jsfiddle.net/X7SVe/