我有多个类的元素
<div id="d1" class="class1 class2"></div>
<div id="d2" class="class1 class2"></div>
在与上述div绑定的事件处理程序中,我想选择所有类似的元素,即从事件目标中获取类名,然后选择具有相同类名的所有元素。
我想出了这个:获取class
属性&amp;用.
拆分或替换空格似乎有点粗糙。我是否缺少一个可以轻松处理此问题的jquery功能?
classStr = $(e.currentTarget).attr('class')
//Method 1 - split at space & prepend dot & join
classSelector = (classStr.split(/\s+/).map(function(v){return '.'+v})).join('')
//Method 2 - Replace space with '.' and prepend '.'
classSelector = '.' + classStr.replace(/\s+/,'.')
desiredElem = $(classSelector)
答案 0 :(得分:2)
我是否错过了一个可以轻松处理此问题的jquery功能?
我不这么认为,不。你的方法#2可能是最直接的。请注意,该类反映为className
,因此您无需执行$(e.currentTarget).attr('class')
操作。所以:
var classSelector = '.' + e.currentTarget.className.replace(/\s+/g, '.');
var desiredElems = $(classSelector)
但要注意IE8及以下版本没有 currentTarget
。如果你在jQuery事件处理程序中执行此操作,则可能需要this
。
var classSelector = '.' + this.className.replace(/\s+/g, '.');
var desiredElems = $(classSelector)
(即使在IE8(live example)上,jQuery也能正确提供currentTarget
,所以如果你在jQuery事件处理程序中,{{ 1}}很好。)