Jquery .attr('class')不返回继承的父类

时间:2012-07-02 06:47:35

标签: jquery class inheritance

使用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-"]')走上树,但这并不是很酷,而且可能很贵。

欢迎实现我的目标的替代方法。

1 个答案:

答案 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
}

演示: http://jsfiddle.net/elclanrs/3tR93/