2014-02-12 126 views
-1

我有,我试图做一个jQuery脚本的问题jQuery的变化图像,代码如下所示:孩子的div

HTML:

<div class="box right"> 
    <div class="image"> 
      <img src="domainname/folder/folder/gear.png" alt="Teambuilding"> 
    </div> 
    <div class="text"> 
      <span>Teambuilding</span> 
     <p>This is Photoshop's version of Lorem Ipsum. Proin gravida nibh vel velit auctor aliquet. Aenean sollicitudin, lorem quis bibendum auctor, nisi elit consequat ipsum, nec sagittis sem nibh id elit.</p> 
    </div> 
</div> 

的Javascript:

<script type="text/javascript"> 
jQuery(function(){ 
    jQuery(".box").hover(
      function(){this.next().next().src = this.next().next().src.replace(".png","2.png");}, 
      function(){this.next().next().src = this.next().next().src.replace("2.png",".png"); 
    }); 
}); 
</script> 

这是我在Chrome中遇到的错误:Uncaught TypeError: Object #<HTMLDivElement> has no method 'next'

我不明白.next()不应该遍历DOM到下一个元素?

感谢

+0

jquery的下一个() - 获取后立即各元素的同级集合中匹配的元素。如果提供了一个选择器,只有当它与该选择器匹配时才会检索下一个兄弟。这里的关键是下一个兄弟 – Huangism

+0

在jQuery事件处理程序中,'this'不是一个jQuery对象,它是DOM元素。所以用代码中的'$(this).'代替'this.'。 –

回答

1

您需要搜索的子元素,使用find()

$(this).find("img").attr("src", function() { 
    return this.src.replace(".png","2.png"); 
}); 

next()搜索下一个兄弟元素,你需要找到孩子。

+0

我改变了这个,我得到这个错误“未捕获TypeError:无法调用方法'取代'未定义” – kGk13

+0

@ kGk13 - 我编辑替换源的代码 – tymeJV

+0

jQuery(function(){ jQuery(“ ()“).hover( function(){jQuery(this).find(”img“)。attr(”src“,function(){ \t \t return this.src.replace(”。png“, “2.png”)});}, \t \t函数(){jQuery的(本).find( “IMG”)ATTR( “SRC”,函数(){ \t \t \t返回this.src.replace。 (“2.png”,“。png”)});} ); });我得到这个“Uncaught TypeError:不能调用方法'取代'未定义”,也许我是小白,无论如何感谢您的帮助.. http://jsfiddle.net/RaHc3/这应该是更有用 – kGk13

0

把元件上的ID,然后做

$("#imageID").attr('src', 'the/new_image.jpg'); 
+0

我可以' t放一个id,因为在wordpress中有一个循环产生的元素 – kGk13