1

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

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;
        }
    }
}

谢谢!

4

5 回答 5

1

更新值后触发更改事件

var $select = $('#finder-3--16');
$('a[href="#yearselect"]').click(function () {
    $select.val( $(this).data('select') );
    $select.trigger('change');
});
于 2013-09-25T20:12:00.737 回答
1

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

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

或者.trigger('change')

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

于 2013-09-25T20:04:59.373 回答
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();

})

});

于 2013-09-25T20:17:57.220 回答
1

尝试这个:

var $select = $('#finder-3--16');
$('a[href="#yearselect"]').click(function () {
    $select.val( $(this).attr('data-select') );
});
于 2013-09-25T20:09:58.300 回答
1

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

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

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

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

于 2013-09-25T20:18:06.310 回答