使用jQuery将样式应用于已单击元素的所有实例

使用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") });

我的目标是让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();
    var selectedElement = this.tagName;
    $(selectedElement).css('border','1px dotted #333');
}
);
尽管我使用了通用选择器(因为我只发布了几个列表(一个是an
ol
,另一个是a
ul

上述代码根据@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()
,因为您正在调用一个方法。避免使用通配符选择器
*
来分配处理程序。通常还有另一种方法。