1

使用 Jquery 1.6.4。

context-我正在尝试使用 css 通过在我的 UI 的每一层 应用前缀为的类来为我的应用程序提供有关用户操作上下文的线索。

因此,对于单击“搜索”div 中某些内容的用户,我可以分配类“context-userContext-search”,然后当我调用 $(this).attr('class') 和依此类推,直到应用于元素本身的最具描述性的上下文标志。

我这样做是为了避免为每个需要它的目标元素定义整个层次结构。但是..它不起作用。

我的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-"]'),但这并不那么酷,而且可能很昂贵。

欢迎使用其他方法来实现我的目标。

4

1 回答 1

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/

于 2012-07-02T06:53:44.137 回答