使用带有动态添加元素的slideToggle()

时间:2011-06-28 13:51:15

标签: jquery slidetoggle

我在使用jquery slidetoggle函数获取动态添加的元素以进行切换时遇到问题。此外,由于遗留系统要求,我使用的是jquery 1.2.6。

此外,元素切换,但似乎切换发生在页面上元素数量的次数。

这就是我所拥有的:

.toggleMe {
display:none;}
.toggle {
cursor:pointer;}

$(document).ready(function() { 
    $(".toggle").click(function() { 
        $(this).parents(".reportcontainer").children('.toggleMe').slideToggle('fast');
        return false;
    });
});

<div class="reportcontainer">
    <div class="rbanner toggle">
       <div class="rtitle"><a href="#" class="toggle">CLICK HERE TO TOGGLE</a></div>
       <div class="rexpand toggle expand"></div>
    </div>
    <div class="toggleMe"> HIDDEN / TOGGLED CONTENT </div>
</div>

我很感激任何人都能给予的帮助。

谢谢! 戴夫

编辑***我想出了我的问题 - 基本上每当用户将元素添加到页面时,它也会添加jquery函数,因此函数执行的次数很多次都在页面上。

感谢你的所有建议。

2 个答案:

答案 0 :(得分:0)

理想情况下你会使用.live,但我不确定jquery 1.2是否拥有它。您可以做的另一件事是在添加新元素后再次运行绑定操作。当您在document.ready中执行此操作时,只有DOM中已有的元素才会绑定到事件,因此在添加项目后也会执行相同的操作。 (您可能需要检查是否存在双重绑定或其他内容)。如果出现问题,您可以在新项目中添加额外的课程(比如'pendingbind'),然后再做一个

$(".pendingbind").click(...)<br>
$(".pendingbind").removeClass("pendingbind")

类似的东西

答案 1 :(得分:0)

你的代码似乎工作正常。

但如果你复制粘贴它“按原样”,那么你缺少样式和脚本标签

<style>
.toggleMe {
display:none;}
.toggle {
cursor:pointer;}
</style>

<script>
$(document).ready(function() { 
    $(".toggle").click(function() { 
        $(this).parents(".reportcontainer").children('.toggleMe').slideToggle('fast');
        return false;
    });
});
</script>

最诚挚的问候, 最大