2012-04-11 85 views
2

我在我的网站上使用jQuery 1.7.1,并使用.live()函数来处理需要在将来添加的元素上调用的某些事件。由于某种原因,它不工作(没有错误,没有警报,没有显示)。我读了一些,有些人说它不起作用,有些人说它工作正常,但我还没有看到任何解决方法,修复或甚至最近的任何内容。它可以在其他浏览器中正常工作,而不是在IE9中(也可能是其他IE浏览器)。jQuery .live()不能在IE9中工作

是否有替代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> 
+2

'.live'从1.7开始被弃用。你有没有尝试过的替代品? (我想不是,先看看文档吧)。 – 2012-04-11 16:27:02

+0

你可以发布HTML吗? – 2012-04-11 16:31:30

+0

看看[这篇文章] [1]看起来像它可能是你寻找的答案 [1]:http://stackoverflow.com/questions/3840149/jquery-live-event-for- added-dom-elements – mcgrailm 2012-04-11 16:32:38

回答

3

在IE中,option元素不会获得点击事件,只有select元素。您将需要将您的事件绑定到选定对象。

尝试在IE这个测试应用程序,看看问题:http://jsfiddle.net/jfriend00/JGrbh/

每中,你实际上试图做你的多个请求披露,你可以像使用此http://jsfiddle.net/jfriend00/Ry9Ns/.on()动态形式,而不是修复它已弃用.live()

$("#container").on('dblclick', 'select[name="CourseLevelSelector"]', function(e) { 
    var ids = $('select[name="CourseLevelIDs"]'); 
    $(this).find(":selected").each(function() { 
     // make sure selected item is not already in the other list 
     if (!ids.find('[value="' + this.value + '"]').length) { 
      $(this).clone().appendTo(ids); 
     } 
    }); 

}) 


$("#container").on('dblclick', 'select[name="CourseLevelIDs"]', function(e) { 
    $(this).find(":selected").remove(); 
})​ 
+0

只是我的运气...你会碰巧知道这个解决方法吗? – JakeJ 2012-04-11 16:41:18

+0

我不确切知道你的HTML看起来像什么或者你真的想要检测什么事件,但是你可能想要使用select对象上的'change'事件。 – jfriend00 2012-04-11 16:42:40

+0

我会发布一些HTML和我想要做的。请稍等 – JakeJ 2012-04-11 16:43:10

-1

尝试jQuery.on因为你正在使用1.7版本的jQuery。

如果出现IE对其敏感的某些标记问题。它通常发生在Div ID命名约定中。

+0

不回答问题。切换到.on()是值得评论的,但不是问题的答案。 – jfriend00 2012-04-11 16:28:49

+0

这就是为什么我添加了div标记问题,导致大多数jquery活失败。 – 2012-04-11 16:30:00

+0

我已经遇到过这个问题,因为我用数字代替了ID的alpha neumaric名称。也许这是一件非常小的事情,但它最重要。 – 2012-04-11 16:31:16

0

我发现自己对基于关闭的jfriend00

提供。如IE不支持的选项标签的点击处理程序的信息这个问题的解决方法,这里是我做了什么:

$('select[name="CourseLevelSelector"]').live('dblclick', function() { 
    var doubleClickedOption = $(this).find(':selected'); 

    //Do Stuff 
}); 

它处理选择框本身的双击,并获取选定的项目作为jQuery对象在代码中使用。

-Jake