我不能在此處顯示實例,但我看不到slideToggle如何被調用兩次。它被點擊鏈接調用。slideToggle在一次調用中執行兩次
這裏:
// initialize the jquery code
$(function(){
$('div.slideToggle a').click(function(){
$(this).parent().siblings('div.remaining-comments').slideToggle('slow',function(){ //'this' becomes the remaining-comments.
var hidden = $(this).siblings('div.slideToggle').find('input').val();
if($(this).siblings('div.slideToggle').find('a').html().substr(0,4) == 'Show'){
$(this).siblings('div.slideToggle').find('a').html('Hide comments');
}
else {
$(this).siblings('div.slideToggle').find('a').html(hidden);
}
});
});
});
它是爲了顯示和隱藏一個博客頁面上額外的評論。然而,它是顯示然後隱藏在一個點擊。我已經在'if'和'else'中都發出警告,並且都出現了,那麼它是如何被調用兩次的呢?
顯然,當鏈接包含文本'顯示'它顯示隱藏的div,並且當再次點擊時它不會找到'顯示',因此會隱藏div。有趣的是,它的運行非常完美。它在公司內聯網上,所以我想也許別的東西可能會影響它,但我真的不知道如何。
這不是最好的解決辦法...對待這個問題不症狀,如果它正在運行兩次,*爲什麼*?沒有理由兩次運行所有'ready'處理程序代碼,這是非常低效的。另外如果其他'click'處理程序綁定到該元素? – 2010-09-30 10:59:16
我認爲它必須與.ready被多次調用。我們的頁面是大量不同代碼片段的混合。所以可重用的函數被放在單獨調用.ready中。取消綁定爲我做了竅門,謝謝。 – 2010-09-30 11:07:06
我知道尼克,但我不知道爲什麼他的準備好聲明是兩次運行,所以我不能暗示可能的解決方案。 allthough我應該補充說,這是一個解決方法,而不是本身的修復。 – Sander 2010-10-06 10:01:56