我正在使用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?
答案 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 工作正常并仅触发一次。