2017-06-17 69 views
0

此腳本運行正常,直到我更新Joomla 2.5到3.7,php5.6到php7和http到https(在SSL中的站點)。 jquery被正確調用。 我不知道該更新被影響的腳本,但我相信這是因爲我更新到PHP7:jQuery element.closest(...).attr不是函數

$(function(){ 
    $('.thumbs img').mouseenter(function(){ 
     var $bigImage = $(this).closest('.annonces').find('.bigimage'); 
     $bigImage.attr('src',$(this).attr('src').replace('180__','600__'));  
    }); 
}); 

當我試圖運行它,我得到這個錯誤:

TypeError: $(...).closest(...).find is not a function

下面是HTML:

echo '<div class="annonces">'; 

//images > 768px 

if ($book[9]) 
{ 
echo '<div class="photosbig"><div class="annoncephoto1" > 
<img class="bigimage" src="/annonce/600__' . $book[9] . '" /></div>'; 
} 
echo '<div class="annonces_legende" style="font-style:italic;"> 
Passez la souris sur une vignette pour voir l’image apparaître ci-dessus. 
<br />Cliquez pour agrandir l’image.</p></div>'; 
echo '<div class="annoncephoto2" >'; 
echo '<div class="thumbs" >'; 
if ($book[9]) 
{ 
echo '<a href="/annonce/' . $book[9] . '" rel="shadowbox"> 
<img src="/annonce/180__' . $book[9] . '" /></a>'; 
} 
if ($book[10]) 
{ 
echo '<a href="/annonce/' . $book[10] . '" rel="shadowbox"> 
<img src="/annonce/180__' . $book[10] . '" /></a>'; 
} 
if ($book[11]) 
{ 
echo '<a href="/annonce/' . $book[11] . '" rel="shadowbox"> 
<img src="/annonce/180__' . $book[11] . '" /></a>'; 
} 
if ($book[12]) 
{  
echo '<a href="/annonce/' . $book[12] . '" rel="shadowbox"> 
<img src="/annonce/180__' . $book[12] . '" /></a>'; 
} 
if ($book[17]) 
{ 
echo '<a href="/annonce/' . $book[17] . '" rel="shadowbox"> 
<img src="/annonce/180__' . $book[17] . '" /></a>'; 
} 
if ($book[18]) 
{ 
echo '<a href="/annonce/' . $book[18] . '" rel="shadowbox"> 
<img src="/annonce/180__' . $book[18] . '" /></a>'; 
} 
echo '</div></div></div>'; 
} 
+1

https://docs.joomla.org/J3.x:Javascript_Frameworks#jQuery_JavaScript_Framework:_「這將加載j **版本1.11.1庫在**無衝突模式下**這意味着它可以通過' jQuery'名稱空間,而不是通過'$'。「_ – Andreas

+0

我們可以用你的html嗎? –

+0

這裏是一個例子頁面: https://www.lagrandiere-immobilier.fr/annonces-ventes-fr?annoncenumber=402-3979 – Rich

回答

0

補充研究安德烈亞斯建議幫助我。儘管看起來jquery庫已經被其他人加載了,但似乎與'$'符號有衝突。我用'jQuery'取代了'$',它的功能如下:

jQuery(function(){ 
jQuery('.thumbs img').mouseenter(function(){ 
var bigImage = jQuery(this).closest('.annonces').find('.bigimage'); 
bigImage.attr('src',jQuery(this).attr('src').replace('180__','600__'));  
}); 
}); 

感謝您對所有人的幫助。

0

不知道,但你可以嘗試用$(document)更換$(this)如果.bigimage你tryi ng得到的範圍在.thumbs img範圍之外。

此外,「htmls」是什麼意思?您可以添加您正在嘗試使用的文檔的來源嗎?

+0

而不是htmls。抱歉。 – Rich

0

我在我的系統中做了一個你的html結構的演示。我認爲你在html代碼的結構上有問題。 看看結構我所做的:從與類「拇指」的div有帶班的DIV「annonces」等前帶班「IMG」 div的,上述結構

<div class="thumbs"> 
    <div class="img"> 
     <div class="annonces"> 
      <div class="photosbig"> 
       <div class="annoncephoto1" > 
        <img class="bigimage" src="image/logo180__.png" /> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

注意。 .. 如果結構不是這樣的,那麼你的代碼將無法工作。

+0

thumbs div在annonces div內,在更新之前工作。 annonces div是foreach循環中所有內容的組合函數。我無法使用你所建議的結構。 – Rich