我正试图在网站上实现切换效果。 html看起来像这样:
<div class="prod-toggle-click">
<h2>Test</h2>
<div class="prod-toggle">
<p>test</p>
</div>
</div>
<div class="prod-toggle-click">
<h2>Test 2</h2>
<div class="prod-toggle">
<p>test 2</p>
</div>
</div>
和JS:
<script>
$(".prod-toggle-click").click(function(){
$(this).parent().find('.prod-toggle').toggle();
});
</script>
这会切换两个div的.prod-toggle
。但我只需要父母的.prod-toggle
来切换。
我试过这样的话:
<script>
$(".prod-toggle-click").click(function(){
$(this).next('.prod-toggle').slideToggle();
});
</script>
但这也不起作用。有什么建议吗?
答案 0 :(得分:2)
您只需使用find('.prod-toggle')
并删除您正在使用的parent()
或next()
即可。这是因为div
类prod-toggle
位于div
内,类prod-toggle-click
,因此find()
只适合您。
$(".prod-toggle-click").click(function(){
$(this).find('.prod-toggle').toggle();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="prod-toggle-click">
<h2>Test</h2>
<div class="prod-toggle">
<p>test</p>
</div>
</div>
<div class="prod-toggle-click">
<h2>Test 2</h2>
<div class="prod-toggle">
<p>test 2</p>
</div>
</div>
答案 1 :(得分:2)
您需要将其放在$(document).ready下,并删除parent()
$(document).ready(function () {
$(".prod-toggle-click").click(function(){
$(this).find('.prod-toggle').toggle();
});
});
答案 2 :(得分:2)
对于这种特定情况,我会使用children()
代替find()
。它只查看节点的直接子节点。它更明确,这是我偏好的原因。我想性能不是问题,但children()
也应该更快。
$(".prod-toggle-click").click(function(){
$(this).children(".prod-toggle").toggle();
});