.toggle()不起作用,执行两者

时间:2009-12-09 22:05:32

标签: jquery

下面的这个功能适用于静态页面,但在动态页面中它无法正常工作,它在第一次点击时执行这两个功能。

当用firebug(或jsenav)测试时,它确实可以正常工作

$(document).ready(function() {
    $(".toggleShipingSched").toggle(function(){
    $(this).html("close schedule").addClass("open").parent().animate({height:300+"px"},500);
},
    function(){
    $(this).html("see schedule").removeClass("open").parent().animate({height:34+"px"},500);
})
});

通过说动态我的意思是它来自服务器生成的内容。不是静态HTML 我解决了这个问题。

1 个答案:

答案 0 :(得分:4)

我会在这里猜测一下。 如果您通过动态页面表示您使用ajax加载某些内容(或使用javascript生成),则必须在加载内容后绑定.toggle()而不是文档就绪(因为加载的元素不会出现在文档中)。如果你这样做,你最终可能会绑定.toggle()两次。

基本上,如果你运行$(“。toggleShipingSched”)。toggle()两次,它将不会覆盖第一个事件,而是将另一个事件绑定到它。然后单击.toggleShipingSched元素时,将调用两个函数。

如果这是问题,请确保在绑定新的toggle()之前取消绑定click事件。

$(".toggleShipingSched").unbind('click');