2016-08-17 152 views
1

我試圖讓Jq聽同一個onclick方法中的三個按鈕,然後觸發一個函數並通過$(this)調用點擊的按鈕;如何讓onclick();聽多個按鈕

這裏是一個示例:

$("body").on('click', 'a.home:visible', 'a.mobile:visible', 'a.phone:visible', function() { 
     var attr = $(this).attr('attr'); 


     $(this).parents('.dropdown-menu').prev().prev().text(attr); 
    }); 
+1

這是一個演示? – guradio

+0

目前,我會讓所有的按鈕共享相同的類,然後觸發事件,因爲在我的情況下,共享同一類是可能的; –

+0

等待極客們告訴如何讓onclick事件聽多項選擇器:) –

回答

2

,你做到了基本正確。你的方法很好。但是你必須把它合併成一個字符串,而不是單個參數。而且你不需要:visible,因爲你不能在click上看到不可見的元素。 ;)

$("body").on('click', 'a.home, a.mobile, a.phone', function() { 
    var attr = $(this).attr('attr'); 
    $(this).parents('.dropdown-menu').prev().prev().text(attr); 
}); 

如果元素是靜態的,您甚至應該使用普通事件偵聽器而不是委派。

$('a.home, a.mobile, a.phone').click(function() { 
    var attr = $(this).attr('attr'); 
    $(this).parents('.dropdown-menu').prev().prev().text(attr); 
}); 
+0

感謝您向我提供這些信息,請您介紹一下靜態元素的更多內容我的意思是如何判斷這個元素是靜態的以便使用建議的aparoche? –

+0

靜態意味着,該元素僅在創建頁面時創建一次。動態元素可以通過AJAX添加或通過其他任何腳本創建。然後像你在你的例子中那樣使用它。如果它們是靜態的,那麼第二個將是更好的選擇。 @SuhaybKharabsheh – eisbehr

+0

@eisbeht所以它是動態的,因爲我點擊克隆手機領域越來越多,並且按鈕用戶點擊是在DOM準備好後創建的,謝謝 –

1

把它們放在一個引號

$("body").on('click', 'a.home:visible,a.mobile:visible,a.phone:visible', function() { 
    alert('Clicked') 

}); 

JSFIDDLE