我創建了一個jQuery UI按鈕,並且想要在mouseenter事件中添加一個'X'輔助圖標,並在mouseleave事件中刪除'X'。聽起來很簡單。關於懸停更改jQuery UI的按鈕圖標 - 在IE和Chrome上破解
$("#hover").button({
icons: {
primary: "ui-icon-tag"
}
}).hover(function (event) {
// hover in
$(this).button("option", "icons", { primary: "ui-icon-tag", secondary: "ui-icon-close" });
}, function (event) {
// hover out
$(this).button("option", "icons", { primary: "ui-icon-tag" });
});
如果您在按鈕內移動鼠標光標,則會多次觸發懸停事件。
它可以在Firefox中使用,但是在IE和Chrome中失敗。
這是很難解釋的離奇效果的話,但請看到的jsfiddle這裏:
我的目標是要實現在所有瀏覽器一致的效果。 感謝=)
編輯***
現在我有一些線索,爲什麼懸停在IE和Chrome打破。 懸停UI按鈕幾次,檢查在Firebug的按鈕元素, 原來的html標籤的jQuery UI部件有缺陷..
<button id="hover" class="ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-button-text-icons" role="button">
<span class="ui-button-icon-primary ui-icon ui-icon-tag"/>
<span class="ui-button-text">Hover me!</span>
<span class="ui-button-icon-secondary ui-icon ui-icon-close"/>
</button>
<span class="ui-button-icon-primary ui-icon ui-icon-tag"/>
<span class="ui-button-text">Hover me!</span>
<span class="ui-button-icon-secondary ui-icon ui-icon-close"/>
</button>
注意額外的跨越,現在按鈕關閉標籤? 這種行爲是一個jQuery UI的bug嗎?
你可以在這裏嘗試的例子:
這是行不通的。試過了。事實上,在引擎蓋下,懸停使用mouseenter和mouseleave作爲事件處理函數,在那裏讀取。我有一種感覺,種族情況正在發生。它發生在你真的快速翱翔在按鈕上,並導致上面顯示的缺陷元素.. – Kagawa
我正在作戰jsfiddle,但我認爲我更新的答案工程... – Jason
它仍然是相同的,只適用於Firefox,失敗在Chrome和IE瀏覽器上。第二個圖標('X' - 十字形)在幾次快速懸停後不會被移除..也許你應該再試一次=) – Kagawa