0

関数を使用して、data()いくつかの値に2つの値を追加しますdivs$oRowdivへのポイント)

$oRow.data("more", {moreValue: 750, moreIndex: 4});

div後で、特定の値を持つ(1つしかない)を見つけようとしていますmoreIndex

私は次のようにやっています:

$oMore = $(".meter_battery_row").filter(function(){
                   return $.data(this, "more").moreIndex == 4;
                   }); 

しかし、うまくいかないようです。上記の行の後に表示しますwindow.alert($oMore)が、この行に到達していないようで、フィルター機能で何らかの問題が発生しています。

誰でもアイデアはありますか?

編集

.meter_battery_rowdivsデータ値を添付するクラスです。($oRowクラスの.meter_battery_row)

4

4 に答える 4

1
$('div.meter_battery_row[data-moreIndex="4"]') does not help you ? 

通常、.data()関数 add はカスタム値を div にdata-...接頭辞属性として追加します。

属性セレクターを使用して、指定した div を取得できます。

firebug で選択しようとしている要素を調べると、moreIndex が属性として div 要素に保存されていることがわかります。

于 2012-08-30T08:21:25.050 に答える
1

data- 属性を追加して、後で簡単に取得して引き続き使用できるようにすることができます$.fn.data()

$oRow.attr('data-moreIndex', 4).attr('data-moreValue', 750);
// ...
$oMore = $('.meter_battery_row[data-moreIndex="4"]');

これが実際の例です。

于 2012-08-30T08:25:20.213 に答える
1

最初のチェック$.data(this, "more")

return  ($.data(this, "more") && $.data(this, "more").moreIndex == 4);

そうしないと、すべての要素に追加データがない場合にエラーが発生し、フィルタリングが停止します。

于 2012-08-30T08:26:48.747 に答える
1

$.data(this, "more")問題は、要素の 1 つだけを呼び出すとobject が返され{moreValue: 750, moreIndex: 4}、残りは undefined が返されることです。その後、呼び出すundefined.moreIndexとエラーが発生します。これを試してください:

 return $.data(this, "more") && $.data(this, "more").moreIndex == 4;
于 2012-08-30T08:27:15.097 に答える