更改中的<select>不能通过.val()</select>更改值

时间:2014-03-06 15:30:34

标签: jquery

$('#changeRows').on('change', function(){
    var changedValue = $('#changeRows').val();
    alert("This is my value: "+changedValue);
    //do my stuff
}

setTimeout(function() {
    $('#changeRows').val("<?=$contentData['rows'];?>");
}, 1500);

我怎样才能让它按预期工作?价值变了,但是变化没有被称为......

3 个答案:

答案 0 :(得分:1)

当通过 GUI而不是通过代码更改值时会触发更改事件。虽然您可以使用.trigger("change")change()

触发更改事件

Live Demo

setTimeout(function() {
    $('#changeRows').val("<?=$contentData['rows'];?>").change();
}, 1500);

答案 1 :(得分:1)

只有在用户操作导致更改

时才会触发更改事件

如果程序化更改,您需要手动触发它,您可以使用.change().trigger('change')

setTimeout(function() {
    $('#changeRows').val("<?=$contentData['rows'];?>").change();
}, 1500);

答案 2 :(得分:1)

您可以尝试使用jquery的主体进行更改: -

$('body','#changeRows')。on('change',function(e){

});

或者如果动态制作dom中的元素,您可以选择以下jquery的实时更改:

$('。changeRows')。live('change',function(){

});