2014-11-08 236 views
-2

我正在嘗試創建一個動態的按鈕列表,它會對用戶做出反應。代碼如下:jQuery .on()方法不執行元素上的jQuery功能

$('#left').on("mouseenter", 'div', function() { 
    dispEvent($(this).hasClass('button'); 
    $(this).addClass('highlighted'); 
}); 

$('#left').on("mouseleave", 'div', function(event) { 
    dispEvent($(event.target).hasClass('button'); 
    $(this).removeClass('highligted'); 
}); 

$('#left').on('click', 'div', function(event) { 
    dispEvent(event.target == this); 
    $(this).remove(); 
}); 

'#left'id是相關div的靜態容器(按鈕面板)。 dispEvent是顯示信息的幫助函數。我知道該函數正在執行,因爲當事件觸發時我的顯示正在更新。
我也知道它找到一個html元素,該元素具有正確的類,並且事件目標和我引用的'this'是相同的(如顯示輸出'true'),但對於某些原因我無法在.on()方法中添加該類。 我通過$([selector]).hover()將該類添加到一個靜態創建的按鈕,以確保類名是正確的,.addClass()正常工作(它按預期工作)。由於$(this).hasClass('button')返回true並且測試.remove()移除了元素,我知道它識別該元素,並且可以將其包裝到一個jQuery對象中並執行功能就可以了。

回顧一下。 addClass()函數和高亮類用鼠標懸停在靜態對象上,.on()識別事件並輸入其代碼,jQuery將對象識別爲html元素,並且可以對其執行至少一些功能,但它不能在.on()中添加該類。 (當我有.on()函數時,即使靜態按鈕也不會添加高亮類)。

對不起,問題的問題,但我想徹底。感謝您的時間。

+1

這很羅嗦。請張貼更多的代碼,並可能是一個jsfiddle。謝謝。 – Timmerz 2014-11-08 13:02:09

+0

如果我沒有澄清,我怎麼能得到addClass的工作? – LushKitch 2014-11-08 13:02:15

+0

總是使用你的控制檯調試js,明顯的語法錯誤 – 2014-11-08 13:03:05

回答

0

這是非常簡單的。你拼錯了highlighted

.highligted { 
    box-shadow: 0 0 8px #FFD700; 
    cursor: pointer; 
} 

//Event Handlers 
$('#left').on("mouseenter", 'div', function() { 
dispEvent($(this).hasClass('button')); 
    $(this).addClass('highlighted'); 
}); 

$('#left').on("mouseleave", 'div', function(event) { 
dispEvent($(event.target).hasClass('button')); 
    $(this).removeClass('highligted'); 
}); 
+1

甜美的主。我發誓我檢查了五次,並複製粘貼這個名字。好吧,謝謝你......我現在覺得自己像個白癡。我很感激你花時間看看結束。我會查看我的版本歷史記錄,看看發生了什麼。 – LushKitch 2014-11-08 15:05:50

+0

您可能希望使用css':hover'和':active'來代替'mouseenter','mouseleave'和'click' – Timmerz 2014-11-08 15:09:45

+0

css的示例alt:http://jsfiddle.net/bfphkx9c/ – Timmerz 2014-11-08 15:12:06

1

你必須在代碼中的語法錯誤,所以它不會在所有運行:

dispEvent($(this).hasClass('button'); 

應該是:

dispEvent($(this).hasClass('button')); 

與同爲第二dispEvent電話。

如果在瀏覽器中打開錯誤控制檯,應該有語法錯誤消息。

+0

這實際上是一個傳輸錯誤。該代碼是正確的,在我的文件和小提琴http://jsfiddle.net/Lmcsvudk/ – LushKitch 2014-11-08 13:22:22