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

时间:2010-10-07 23:09:08

标签: jquery jquery-selectors css-selectors selection elements

我的目标是让jQuery查看我刚刚点击的元素(例如ap或li标签),然后将样式应用于该元素的所有实例(因此所有p标签都在页)。

到目前为止,这是我的代码,但它只将样式应用于单击的单个元素。

$("article *", document.body).click(function (e) {
  e.stopPropagation();
selectedElement = $(this);
$(selectedElement).css("border", "1px dotted #333")
});

非常感谢任何帮助或建议!

2 个答案:

答案 0 :(得分:3)

$('article *',document.body).click(
function(e){
    e.stopPropagation();
    var selectedElement = this.tagName;
    $(selectedElement).css('border','1px dotted #333');
}
);

JS Bin的演示,虽然我使用了通用选择器(因为我只发布了几个列表(一个ol另一个ul)。

上面的代码是为响应@Peter Ajtai的评论而编辑的,并且链接的JS Bin演示更新以反映变化:

  

为什么在查看tagName之前绕过块一次? var selectedElement = this.tagName;怎么样。它也是e.stopPropagation(),因为你正在调用一个方法。

答案 1 :(得分:2)

我不知道在article元素下嵌套了多少元素,但使用*将点击事件处理程序添加到所有中似乎很浪费。

相反,只需将处理程序添加到article,然后获取已点击的tagName的{​​{1}}。

e.target

这将更多更有效。