2010-05-07 60 views
1

這是我的HTML:jQuery的發現工作不

 <p class="first">blah blah <a href="" class="more">read more</a></p> 
     <div class="read_more"> 
      <p>more text</p> 
     </div> 

和Javascript:

$(document).ready(function(){ 
    $('a.more').click(function(){ 
    $(this).find('.read_more').slideDown(); 
    return false; 
    }); 
}); 

似乎

並沒有做任何事情(READ_MORE設置爲顯示:無)任何想法?

回答

4

試試這個:

$(文件)。就緒(函數(){ $( 'a.more')點擊(函數(){$ (本).parent()。 next()。find('。read_more')。slideDown(); return false; }); });

更新:

Here is the demo :)

代碼:

$(document).ready(function(){ 
    $('a.more').click(function(){ 
    $(this).parents().find('.read_more').slideDown('slow'); 
    return false; 
    }); 
}); 

你也可以這樣做:

$(document).ready(function(){ 
    $('a.more').click(function(){ 
    $('.read_more').slideDown('slow'); 
    return false; 
    }); 
}); 

或者這樣:

$(document).ready(function(){ 
    $('a.more').click(function(){ 
    $(this).parent().next().slideDown('slow'); 
    return false; 
    }); 
}); 
+0

您正在要求它找到.read_more INSIDE您的錨標記 - 它不在那裏。該解決方案爲您解決這個問題。 – Erik 2010-05-07 10:45:18

+0

nope仍然不能正常工作:( – fire 2010-05-07 10:46:39

+0

@fire:請參閱我的更新答案。 – Sarfraz 2010-05-07 10:51:19

2

.find(..)查找當前元素中選擇。

你可能想要的是

$(document).ready(function(){ 
    $('a.more').click(function(){ 
     $(this).parent().parent().find('.read_more').slideDown(); 
     return false; 
    }); 
}); 

編輯

增加了另一個.parent()作爲<a>裏面<p>.read_more不在<p>

1

$(這)是指a.more這沒有一個孩子叫.read_more這就是爲什麼它不工作

1

find()無法工作的一個潛在原因是您尋找的元素在您調用它時尚未加載。

在我的情況下,我用一個編輯器插件替換了一個文本字段,編輯器在我調用find()的時候沒有加載。

如果在知道應該能夠找到元素時找不到元素,請在調用find()之前嘗試setTimeout以添加延遲。

注意:setTimeout不是一個很好的解決方案,它只是幫助診斷問題。試着想出一種方法,等到元素加載完成後再進行find()調用。

+1

感謝您回答近7年後,2010年我需要您的時候您在哪裏? :- – fire 2017-04-26 09:56:32

+0

剛剛開始上學,我什麼都不知道哈哈。只希望我的回答可能會幫助其他人堅持這一點。 – 2017-04-27 14:20:32