使用jQuery将样式应用于已单击元素的所有实例
我的目标是让jQuery查看我刚刚单击的元素(例如p或li标记),然后将样式应用于该元素的所有实例(因此页面上的所有p标记) 到目前为止,这是我的代码,但它只将样式应用于已单击的单个元素使用jQuery将样式应用于已单击元素的所有实例,jquery,jquery-selectors,css-selectors,selection,elements,Jquery,Jquery Selectors,Css Selectors,Selection,Elements,我的目标是让jQuery查看我刚刚单击的元素(例如p或li标记),然后将样式应用于该元素的所有实例(因此页面上的所有p标记) 到目前为止,这是我的代码,但它只将样式应用于已单击的单个元素 $("article *", document.body).click(function (e) { e.stopPropagation(); selectedElement = $(this); $(selectedElement).css("border", "1px dotted #333") });
$("article *", document.body).click(function (e) {
e.stopPropagation();
selectedElement = $(this);
$(selectedElement).css("border", "1px dotted #333")
});
如有任何帮助或建议,将不胜感激
$('article *',document.body).click(
function(e){
e.stopPropagation();
var selectedElement = this.tagName;
$(selectedElement).css('border','1px dotted #333');
}
);
尽管我使用了通用选择器(因为我只发布了几个列表(一个是anol
,另一个是aul
)
上述代码根据@Peter Ajtai的评论进行了编辑,并链接了最新的JS Bin演示以反映更改:
为什么在查看标记名之前要绕块运行一次呢?var selectedElement=this.tagName;怎么样?它也是e.stopPropagation(),因为您正在调用一个方法
我不知道在您的
文章元素下嵌套了多少个元素,但是使用*
将单击事件处理程序添加到所有元素中似乎是浪费
相反,只需将处理程序添加到文章
,并获取单击的e.target
的标记名
$("article", document.body).click(function ( e ) {
e.stopPropagation();
$( e.target.tagName ).css("border", "1px dotted #333")
});
这将更加有效。为什么在查看标记名之前先绕块运行一次呢?var selectedElement=This.tagName;
。另外,它是e.stopPropagation()
,因为您正在调用一个方法。避免使用通配符选择器*
来分配处理程序。通常还有另一种方法。