Using Jquery 1.6.4.
我正在尝试使用 css 通过在 UI 的每一层应用前缀为 context-
的类,为我的应用程序提供有关用户操作上下文的线索。
因此,对于单击"搜索"div 中的某些内容的用户,我可以分配类"context-userContext-search",然后当我调用 $(this).attr('class') 等时,该div 中的所有内容都会返回该上下文,依此类推,直到应用于元素本身的最具描述性的上下文标志。
我这样做是为了避免为每个需要它的目标元素定义整个层次结构。 但。。它不起作用。
我的网页:
<div class="context-userContext-search">
<table>
<thead class="context-layoutContext-tableHeader">
<tr class="context-userContext-search">
<th id="search_A2655_header" class="clickable sortable ui-state-highlight dialog_right_menu context-objectAttribute-A2655 context-objectClassName-host" value="A2655">
Hostname
</th>
</tr>
</thead>
</table>
</div>
当我调用$('#search_A2655_header').attr('class')
时,它会返回以下内容:
clickable sortable ui-state-highlight dialog_right_menu context-objectAttribute-A2655 context-objectClassName-host
当我期望它返回以下内容时:
context-userContext-search context-layoutContext-tableHeader clickable sortable ui-state-highlight dialog_right_menu context-objectAttribute-A2655 context-objectClassName-host
这些类当然不存在于任何样式表中,但我不记得它们必须继承才能工作。
我可以和.parents('[class^="context-"]')
一起走上树,但这并不那么酷,而且可能很贵。
欢迎使用替代方法来实现我的目标。
这个呢?
var classes =
$('#search_A2655_header')
.parentsUntil('.context-userContext-search')
.andSelf()
.attr('class')
编辑:
我一直在自己尝试这个,似乎不起作用。试试这个:
var getAllClasses = function (from, until) {
var cs = []
$(from)
.parentsUntil(until)
.andSelf()
.each(function(){
if (this.className)
cs.push(this.className)
})
return cs
}
演示:http://jsfiddle.net/elclanrs/3tR93/