使用Jquery 1.6.4。
我正在尝试使用css通过在我的UI的每一层应用前缀为context-
的类来为我的应用提供关于用户操作上下文的线索。
因此,对于用户点击'search'div中的内容,我可以分配类'context-userContext-search',然后在我调用$(this).attr('class)时,该div中的everthing将返回该上下文')依此类推,直到最具描述性的上下文标志应用于元素本身。
我这样做是为了避免为每个需要它的目标元素定义整个层次结构。但是......它不起作用。
我的HTML:
<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-"]')
走上树,但这并不是很酷,而且可能很贵。
欢迎实现我的目标的替代方法。
答案 0 :(得分:2)
这个怎么样?
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
}