2014-02-12 175 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