Cas*_*jne 2 jquery jquery-selectors
在这段代码中,我需要获取DOM对象,该对象是.tabs委托所连接的原始选择器.
$(".tabs").delegate("li:not(.selected) a", "click", function () {
// ^
// |
// +-----------i need to get this dom object
var selector = $(this).selector; // <---- returns an empty string ?
return false;
});
Run Code Online (Sandbox Code Playgroud)
如何确定是什么.tabs和访问对象?
在有人找到更聪明的方法之前,解决方法可能是将事件处理程序附加到所选元素本身:
$('.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
});
Run Code Online (Sandbox Code Playgroud)
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
}
});
Run Code Online (Sandbox Code Playgroud)
更新:
原始Event对象可通过event.originalEvent.所以你可以这样做:
$(".tabs").delegate("li:not(.selected) a", "click", function (event) {
var dom = event.originalEvent.currentTarget;
});
Run Code Online (Sandbox Code Playgroud)
但它似乎currentTarget只在IE9中得到支持,并且在较低的IE版本中没有其他选择.
因此,大多数跨浏览器兼容的解决方案仍然是上述解决方案.
| 归档时间: |
|
| 查看次数: |
970 次 |
| 最近记录: |