我正在使用Jquery 1.7.2。
我想使用Jquery on来横向Html元素直到一个特定属性(id) 将鼠标悬停在我页面中的任何html元素上。
我们有parents()函数,但问题是如何在具有id属性的父元素上选择stop
$("*", document.body).click(function (e) {
e.stopPropagation();
var domEl = $(this).get(0);
var parentEls = $(domEl).parents()
.map(function () {
return this.tagName;
})
.get().join(", ");
$(“b”)。append(“”+ parentEls +“”); });
这是代码,但我得到所有元素直到root 但我想停止在标签
中具有属性id的壁橱元素请帮帮我。
答案 0 :(得分:3)
只需使用closest:
$(this).closest('#the-id');
除非您只是寻找具有任何id属性的最近的属性,否则将是:
$(this).closest('[id]');
编辑:看到更新的问题后,这应该是您想要的:
$(document).click(function(e) {
e.preventDefault();
var parents = $(e.target).parentsUntil('[id]')
.map(function() { return this.tagName; }).get().join(',');
console.log(parents);
});
请注意,此方法可以实现您想要的,而无需选择并将点击事件绑定到DOM中的每个节点,这是一种非常严厉的方法。
编辑(再次):看起来好像你想要在其上包含带有id属性的标签(上述解决方案是一切,但不包括该标签)。为此,解决方案非常相似:
$(document).click(function(e) {
e.preventDefault();
var $parents = $(e.target).parentsUntil('[id]');
var tagNames = $parents.add($parents.parent())
.map(function() { return this.tagName; }).get().join(',');
console.log(tagNames);
});
答案 1 :(得分:1)
您似乎希望将已点击元素的层次结构映射到文档根目录。在这种情况下,您可以将parents()应用于event.target:
$(document).click(function(e) {
e.preventDefault();
var parentEls = $(e.target).parents().map(function() {
return this.tagName;
}).get().join(", ");
});
请注意,作为jmar777,您还应该更改选择器:"*"
向所有元素添加事件处理程序,这可能不是您想要的。将单个处理程序绑定到document
,而不是利用事件冒泡。