1

Jquery 1.6.4 を使用します。

context-CSS を使用して、UI の各レイヤーで 接頭辞が付いたクラスを適用することにより、アプリにユーザー アクションのコンテキストに関する手がかりを与えようとしています。

したがって、ユーザーが「検索」div 内の何かをクリックすると、クラス「context-userContext-search」を割り当てることができ、$(this).attr('class') を呼び出すと、その div 内のすべてがそのコンテキストを返します。要素自体に適用される最もわかりやすいコンテキスト フラグに至るまで、以下同様です。

これは、必要なターゲット要素ごとに階層全体を定義することを避けるために特に行っています。しかし..うまくいきません。

私の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 に答える