1.最初的時候是這種方式寫的按鈕點擊事件,在貨主部分正常顯示在貨運站部分點擊無效
$(".descriptionLink").click(function(){ if($(this).hasClass("icon-down")){ $(this).removeClass("icon-down").addClass("icon-up").html("收起明細"); $(this).parents(".description-total").siblings(".description-details").slideDown(); }else{ $(this).removeClass("icon-up").addClass("icon-down").html("展開明細"); $(this).parents(".description-total").siblings(".description-details").slideUp(); } });
2.換了一種方式去寫點擊事件在貨運站中才可以點擊,但是會出現點擊一次執行兩次的情況,表現就是列表展開后立馬收起
$(document).on('click','.descriptionLink',function(){ if($(this).hasClass("icon-down")){ $(this).removeClass("icon-down").addClass("icon-up").html("收起明細"); $(this).parents(".description-total").siblings(".description-details").slideDown(); }else{ $(this).removeClass("icon-up").addClass("icon-down").html("展開明細"); $(this).parents(".description-total").siblings(".description-details").slideUp(); } });
3.后面查了一下按這種方式來寫,阻止第二次點擊,顯示正常,查了下這個是因為JQ事件委托導致點擊事件多次執行,解決的辦法就是對點擊事件解綁,也就是off()
$(document).off().on('click','.descriptionLink',function(){ if($(this).hasClass("icon-down")){ $(this).removeClass("icon-down").addClass("icon-up").html("收起明細"); $(this).parents(".description-total").siblings(".description-details").slideDown(); }else{ $(this).removeClass("icon-up").addClass("icon-down").html("展開明細"); $(this).parents(".description-total").siblings(".description-details").slideUp(); } });