使用.html()打破.click()和.hover()事件

时间:2011-11-05 17:29:15

标签: jquery

我遇到需要使用jquery更改图像的src的情况。我知道div的ID,我知道文件名的格式(我需要将_over更改为_main),但图像的src是唯一的唯一标识符。

我的解决方案是使用.html()和.replace来更改图像,这很有用。然而,它有破坏与图像相关的任何.hover()和.click()事件的不受欢迎的副作用。有没有办法恢复这些事件或更改img src的更好方法,不会破坏它们(记住我只能通过src识别图像)?

3 个答案:

答案 0 :(得分:3)

请参阅$.live

它因为你正在替换元素而中断,因此他们失去了他们的点击处理程序。如果您使用.live代替.bind(或其短格式,例如.click),它也适用于所有未来的元素。

答案 1 :(得分:2)

而不是做

$('selector').click(function() {})

这样做

$('selector').live('click', function() {})

即使对象被更改,这也将保留事件。

答案 2 :(得分:2)

你应该只是改变src属性,而不是使用基本上替换整个img标签的html()。

 $("#divID img").attr("src", "new/image/path");

如果没有,您应该使用live来保留附加事件。