如何在动态生成的多选中触发change()?

时间:2012-01-06 15:21:17

标签: jquery forms events jquery-mobile

我正在使用jquery(mobile)生成一个选择菜单,该菜单隐藏/显示HTML表的列。

看起来像这样:

 container = $('<select name="toggleCols" id="toggleCols" multiple="multiple"><option value="default" data-placeholder="true">Edit</option></select>');

 $('.tableRows').each( function(i) {
     if ( $(this).is(".toggle") ) {
         var toggle = $('<option value="'+i+'">sometext'+i'+</option>');
     container.find("#toggleCols").append(toggle); 
     });

这将创建选择菜单,其中包含每个表列的一个选项。选择此选项应隐藏/切换相应的表列。

但是,我无法触发更改事件:

 $("#toggleCols").change( function(){
    console.log( "change" ) 
    // do stuff
    })

如果我使用 live('更改'... 并且有10列,每次选择一个选项时我会得到10个console.logs。所以这也不起作用。

问题
有没有办法在没有实时的情况下使用更改并获得一个console.log?

2 个答案:

答案 0 :(得分:1)

您使用的是最新版本的jQuery吗?在jQuery 1.4.2之后修复了这个问题。

请在此处查看相关问题:Any alternative to jQuery change() to detect when user selects new file via dialog box in IE8?

PS。我试着在你的帖子下写这个评论/问题,但由于某种原因不允许这样做。希望这可以帮助。

答案 1 :(得分:0)

我应该从添加选项的循环中删除事件绑定。然后使用 live 工作正常并仅触发一次。