2013-04-29 46 views
0

我試圖禁用附加到懸停事件的功能,如果我的網站在觸摸設備上查看。如果該設備是觸摸然後我的身體標記有「.touch」,如果沒有觸摸它「無接觸」帶有兩個元素選擇器的jQuery代表

當我寫這樣的委託功能與觸摸類

$('.no-touch .list').delegate('img', 'hover', function() { 
... 
} 

即使我不在觸摸設備上,它也會停止工作。此外,在Chrome開發人員工具中,當我查看元素時,身體標記具有觸摸類,在源視圖中,身體標記沒有該類。這可能是問題的一部分嗎?

+0

'$(「無接觸,.LIST」)' – 2013-04-29 20:51:11

回答

1

當你指定一個委託處理程序,以一些發現body標籤是不夠的改變,以便從該處理程序中刪除它體內的類選擇。你必須:

  1. undelegate body標籤 - 不管是什麼它的當前選擇是
  2. 檢查它在處理程序類。當它被解僱,並採取取決於其類有

DEMO

$('whateverSelectorIsRelevantNow').undelegate('img', 'hover', function() { 
... 
} 
0
$('.no-touch, .list').delegate('img', 'hover', function() { 
... 
} 
+0

不是這是否目標中都選擇不同的邏輯分支?如果.list在帶有.no-touch的body元素中,我試圖只觸發該函數 – humdinger 2013-04-29 20:56:52

相關問題