我在我的网站上使用jQuery 1.7.1并使用.live()
函数来处理需要在将来添加的元素上调用的一些事件。由于某种原因,它不起作用(没有错误,没有警报,没有显示任何内容)。我读了一些,有些人说它不起作用,其他人说它工作正常,但我没有看到任何变通方法,修复或任何近期的事情。它在其他浏览器中运行良好,只是在IE9中(可能不是IE的其他浏览器)。
我可以使用jQuery替代.live,插件或一些可以解决这个问题的解决方法吗?
我目前的代码如下:
$('select[name="CourseLevelSelector"] option').live('dblclick', function () {
//Do Stuff
});
-Jake
编辑:
我的目标一点是我有2个多选框,一个有数据,另一个是空白。当您双击选择框中包含数据的选项时,它会将自身复制到空选择中。如果您再双击已添加的选项,它将完全删除它。 (此代码正常工作,它只是事件处理程序不是)
HTML看起来像这样:
<select name="CourseLevelSelector" multiple="multiple">
<option value="1">First</option>
<option value="2">Second</option>
<option value="3">Third</option>
</select>
<select name="CourseLevelIDs" multiple="multiple">
</select>
答案 0 :(得分:3)
在IE中,option
元素不会获得点击事件,只会获得select
元素。您需要将事件绑定到选择对象。
在IE中试用此测试应用以查看问题:http://jsfiddle.net/jfriend00/JGrbh/
Per,您的更多请求披露了您实际尝试做的事情,您可以使用.on()
的动态格式代替不推荐使用的{{1}来解决此问题http://jsfiddle.net/jfriend00/Ry9Ns/ }。
.live()
答案 1 :(得分:0)
我根据jfriend00
提供的信息找到了解决此问题的方法由于IE不支持选项标签的点击处理程序,这就是我所做的:
$('select[name="CourseLevelSelector"]').live('dblclick', function () {
var doubleClickedOption = $(this).find(':selected');
//Do Stuff
});
它处理选择框本身的双击,并将所选项目作为jquery对象获取,以便在代码中使用。
-Jake
答案 2 :(得分:-1)
尝试jQuery.on
,因为您使用的是1.7版本的jQuery。
或
如果有一些标记问题,IE对它很敏感。它通常使用Div ID命名约定。