【问题标题】:JQUERY - Not reacting to event call when class addedJQUERY - 添加类时不响应事件调用
【发布时间】:2011-02-27 01:24:27
【问题描述】:

我有以下代码用于在水平滚动站点内的不同导航菜单上切换背景图像。

我遇到的问题是,一旦我将 .swap 类动态添加到图像中,它就不会对点击调用做出反应?任何想法都非常感谢!

干杯 保罗

$('img.swap').click(function() {

var thisSrc = $('img.active').attr("src");
var alteredSrc = (thisSrc).slice(0, -7)+".png";
$('img.active').attr("src",alteredSrc);
$('img.active').addClass("swap");
$('ul.navigation li img').removeClass("active");
var thisSrc = $(this).attr("src");
initImg = $(this).attr("src");  
var imgType = (initImg).slice(-4);
var greyImg = initImg.slice(0, -4) + "_up" + imgType;
$(this).attr("src",greyImg);
$(this).addClass("active");
$(this).removeClass("swap");
 );

【问题讨论】:

  • 使用 jquery live ,你的代码应该可以工作,live 绑定所有将来要添加到 DOM 的元素

标签: jquery


【解决方案1】:

您正在寻找 live() 函数,该函数将事件处理程序附加到现在和将来与选择器匹配的所有元素。

【讨论】:

  • 太棒了-我已经完成了一半-但是..我的问题的另一半是以下悬停功能也需要实时,我添加了实时代码,但是悬停效果不起作用? $('img.swap').live('hover', function() { initImg = $(this).attr("src"); var imgType = (initImg).slice(-4); var grayImg = initImg .slice(0, -4) + "_up" + imgType; $(this).attr("src",greyImg); }, function() { $(this).attr("src",initImg); } );
【解决方案2】:

你必须使用jquery live

http://api.jquery.com/live/

因为它们是动态添加的

【讨论】:

  • 干杯,你能用鼠标悬停实时使用吗?似乎可以在鼠标悬停但不能退出时工作,如上面的代码
  • @Paul 你可以使用最新的悬停功能api.jquery.com/hover 处理两者。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 2011-07-13
相关资源
最近更新 更多