2016-02-19 43 views
0

我有的使用jQuery從一個AJAX調用產生以下HTML:檢測從類選擇器中單擊鼠標右鍵?

<ul id="ul-container"> 
    <li class="li-item" data-deviceKey="1">Data1</li> 
    <li class="li-item" data-deviceKey="2">Data2</li> 
</ul> 

然後我有這樣的jQuery代碼:

$('.li-item').mousedown(function(e) { 
    if(e.which == 3) { 
     console.log('Right Click Detected on '+$(this).attr('data-deviceKey')); 
    } 
}); 

我想檢測單擊鼠標右鍵,然後發生時做一些事情。

這不起作用,它強調我。我試着從字面上理解太陽下的每種組合,以便嘗試讓這個工作起作用。列出的方式太多,但從字面上看,沒有任何東西會檢測到右鍵單擊事件。奇怪的是,如果我將選擇器設置爲ul的ID,它會檢測到它嗎?但是,問題是,我需要從選定的li獲取data-deviceKey屬性。

有沒有人知道問題出在哪裏?

事情我已經試過

1:差不多在這每一個回答:How to distinguish between left and right mouse click with jQuery
2:檢測在UL的ID,然後找到「最接近」 li元素,剛剛返回的第一個裏點擊右鍵元素在列表中。
3:在我的實際代碼中,我的li有3個類附加,我試過使用所有這些沒有工作
4:嘗試使用$('#ul-container li')無濟於事。

甚至有可能檢測到類的右鍵點擊?我哪裏錯了?在我沒有留下頭髮之前請幫忙!

+2

你的代碼工作正常:https://jsfiddle.net/1hd91wrs/ – rybo111

+0

是的,它檢測到鼠標右鍵的http:// jsbin。 com/kiluvu /編輯?html,js,控制檯,輸出 –

+0

奇怪它是如何工作的小提琴...但不是在我的網頁..:S必須是其他東西導致它。明天我會在辦公室裏進行調查。不管怎麼說,還是要謝謝你。 –

回答

0

這只是一個猜測,但如果您通過AJAX調用加載HTML內容,則需要在之後註冊點擊處理程序,HTML將插入到DOM中。

嘗試在AJAX請求的.done回調註冊mousedown

$.ajax({ 
    url: "test.html", 
}).done(function() { 
    $('.li-item').mousedown(function(e) { 
    if (e.which == 3) { 
     console.log('Right Click Detected on ' + $(this).attr('data-deviceKey')); 
    } 
    }); 
}); 
+0

謝謝,明天當我回到辦公室時會試一試。奇怪的是它如何在上面的小提琴中工作,但不在我的網頁上..可能不得不重新思考我是如何工作的。欣賞迴應。 –

相關問題