2017-06-13 80 views
0

我遇到了這個解決方案來修復我的.on('click')火災多次的問題。作爲一個新手,我想知道的是,如果這是一個乾淨的方式來解決問題或者只是一個快速/骯髒的修復和如何正確解決它。jQuery off('click')。on('click')dirty-fix or legit?

我可以提供代碼片段,如果真的需要,而是一種普遍的答案就足夠了

編輯: HTML的實現:

<p class="select2-style-button-100-center"> 
    <a href="javascript:void(0);" id="button-detach-profile" class="button linearize chevron-circle-left-icon">detach</a> 
</p> 

和JS-代碼:

vm.buttonDetachProfile.off('click').click(function(e) { 
    var assignedProfiles = vm.assignedProfiles.DataTable().rows('.selected').data(); 
    if(assignedProfiles && assignedProfiles.length > 0) { 
     editProfiles('remove', assignedProfiles); 
    } 
    return false; 
}); 

vm.buttonDetachProfile是我的選擇器

+0

是..代碼片段可能是件好事,提供準確的解決方案。但同時你可以在點擊處理程序中捕獲'event'並寫入'event.stopImmediatePropagation()'或者只是'return false;' –

+0

是的,它是有效的,並且是合法的,但事實上,你將一個處理程序分配給多個時間是你應該真正修復的問題 –

+0

這是一個意見問題(對於SO而言是非常重要的)。我的意見:這是一個骯髒的修復。真正的解決方案是確定你爲什麼試圖附加處理程序不止一次並修復*。*。 –

回答

-1

代碼片段寵物提供一些背景將有所幫助。你

也可以嘗試在代碼中像這樣以防止多次執行

clickcount++; 
    if (clickcount == 1) {} 
相關問題