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



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/

最新更新