直到有人發現了一個更聰明的辦法,解決方法可能是一個事件處理程序附加到所選元素本身:
$('.tabs').click(function(event) {
event.root = this; // or whatever name suits you best
});
$(".tabs").delegate("li:not(.selected) a", "click", function (event) {
// event.root contains the DOM element
});
jQuery的保證事件處理程序的順序執行它們所連接。
,或者您沒有在所有使用delegate
,並選擇測試自己(這可能是最好的解決辦法):
$('.tabs').click(function(event) {
if($(event.target).is("li:not(.selected) a")) {
// this refers to the .tab DOM element
// event.target refers to the originally clicked element
}
});
更新:
原Event
對象可通過event.originalEvent
獲取。所以,你可以這樣做:
$(".tabs").delegate("li:not(.selected) a", "click", function (event) {
var dom = event.originalEvent.currentTarget;
});
但似乎currentTarget
僅在IE9支持,並有較低的IE版本別無選擇。
因此,大多數跨瀏覽器兼容的解決方案仍然是上面的那些。
爲什麼需要選擇? – BoltClock 2011-02-10 10:30:00
選擇器或甚至任何。只要我能以'匿名'的方式訪問.tabs,並且可能比li-a的父級遍歷更好。頁面上有不同的選項卡,需要處理有點不同。 – 2011-02-10 10:34:02