这是我的HTML:
<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设置为display:none)任何想法?
答案 0 :(得分:5)
试试这个:
<击> $(文件)。就绪(函数(){ $( 'a.more')。点击(函数(){ $(本).parent()的next()找到( 'READ_MORE。')了slideDown()。; 返回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;
});
});
答案 1 :(得分:2)
.find(..)
在当前元素中查找选择器。
你可能想要的是
$(document).ready(function(){
$('a.more').click(function(){
$(this).parent().parent().find('.read_more').slideDown();
return false;
});
});
修改
添加了另一个.parent()
,<a>
位于<p>
内且.read_more
不在<p>
答案 2 :(得分:1)
$(this)指的是a.more,它没有一个名为.read的孩子,这就是为什么它不起作用
答案 3 :(得分:1)
find()无法工作的一个潜在原因是,当您调用它时,您正在寻找的元素没有被加载。
在我的情况下,我正在用编辑器插件替换文本字段,并且在我调用find()时编辑器没有加载。
如果你知道自己应该能够找到该元素,请在调用find()之前尝试使用setTimeout添加延迟。
注意:setTimeout不是解决此问题的好方法,它只是帮助诊断问题。尝试在进行find()调用之前想出一种等待元素加载的方法。
答案 4 :(得分:0)
您正试图在不存在的标签下查找 .read_more 通过将 this 替换为 document 可能会起作用