2011-07-17 85 views
2

我有一個按鈕,我決定觸發按鈕:檢查鼠標點擊是否觸發點擊事件?

$(button_name).trigger("click"); 

功能的處理器需要左側的按鈕,使用鼠標觸發時觸發點擊,但也確實通過使用代碼觸發接受點擊,就像上面顯示的行一樣。我如何創建一個條件語句來評估這些條件是否屬實?

if((navigator.appName === "Microsoft Internet Explorer" && window.event.button === 1) 
    || window.event.button == 0 
    || ...){ 

    /* If true, do this */ 
} 
+0

我想任何你可以找到的方式來區分兩者,可以修補(仿真)。 – bart

回答

4

點擊處理程序的第一個參數是事件對象。如果是物理鼠標點擊,它將具有clientXclientY屬性 - 如果它是程序化的,則不會。

$('#button').click(function (e) { 
    if (e.clientX) { 
     // physical click 
    } else { 
     // program click 
    } 
}); 
+0

['originalEvent'](http://stackoverflow.com/questions/6674669/in-jquery-how-can-i-tell-between-a-programatic-and-user-click/6674806#6674806)更好選擇,如果'clientX'爲零會發生什麼? –

+0

嘿好點。與上面相關的答案更好。 – evan

0

如果您想擁有完整的跨瀏覽器支持,面向未來的,我不認爲你可以,JS是非常標準的,當涉及到添加和修改屬性,但我的問題是「你應該?」有幾次模擬鼠標點擊的能力實際上節省了大量的時間和精力。

+1

我同意它應該沒關係,但檢查['originalEvent'](http://stackoverflow.com/questions/6674669/in-jquery-how-can-i-tell-between-a-programatic-和用戶點擊/ 6674806#6674806)jQuery事件的屬性應該是非常有效的。如果jQuery沒有包裝和規範所有的事件,那麼你可能會運氣不好,除非一個近似的解決方案是足夠好的。 –

+0

@mu問題是,除非你真的願意花幾個小時的時間努力試圖破除這種類型的東西,那麼它會真的有效嗎?在這種情況下,我看不出這種努力是值得的。 – cwallenpoole

+0

我們沒有足夠的細節來了解這種情況是否值得。但是,你不需要爲跨瀏覽器問題而煩惱,因爲jQuery封裝了事件,所以你只需要爲jQuery所做的事情而煩惱。無論如何,擔心這可能毫無意義。 –