2013-03-14 76 views
0

我正在使用以下代码填充选择框的选项。填充jquery选择框并更新下拉列表

function generateTerms(x){ 
    var optList = new Array(1,2,3,4,5,6,7,8,9,10,11,12,0); 
    $.each(optList, function(i, value) { 
     if(value==0){var text='Continuous';} 
     else if(value==1){var text=x;} 
     else{var text=x+'s';} 
     $('#term').append($('<option>', { 'value': value, 'text' : text }));   
    }); 
    $("#term").trigger("liszt:updated"); 
} 

使用的,这将是generateTerms('Year');

我的问题是,它更新选择框生成正确的,如果你看的代码,但它不更新jquery的显示系统。我以为.trigger("liszt:updated");会这样做,但由于某种原因它不会。我正在寻找正确的功能来运行。

+0

什么是“jquery显示系统”,什么是“liszt:updated”? – mkoryak 2013-03-14 20:22:15

+0

http://harvesthq.github.com/chosen/ – 2013-03-14 20:30:20

+1

啊,将来会提到你使用的是选择的或者任何插件。否则你的问题几乎无法回答 – mkoryak 2013-03-15 02:24:03

回答

0

liszt:updated是一个自定义事件,触发/绑定它非常简单。这里有一个演示:

http://jsfiddle.net/8BhAV/

var $term = $('#term'), 
    $log = $('#log'), 
    $button = $('button'); 

$term.on('liszt:updated', function (event) { 
    $log.html($log.html() + 'Updated at ' + (+new Date()) + '<br>'); 
}); 

$button.on('click', function (event) { 
    $term.append($('<option>', { 
     value: (+new Date()), 
     text: (+new Date()) 
    })); 
    $term.trigger('liszt:updated'); 
}); 

我的猜测是,你不必束缚($('#term').on('liszt:updated'))的东西,你正在使用的自定义事件。