1

.account-select のすべてのインスタンスのデータ名の値をチェックするコードが必要です。現在、最初の .account-select 要素のみをチェックし、後続の要素はチェックしません。

この関数は現在、John Smith などの要素をクリックすると、.account-select リストのデータ名をチェックします。データ名が同じ場合、John Smith データで新しい li を作成しません。ジョン・スミスと等しいデータ名がない場合は、ジョン・スミスのリを追加します。

これは私が作成した JS-Fiddle ですので、私が言及しているものを見ることができます: http://jsfiddle.net/rsxavior/vDCNy/22/ どんな助けも大歓迎です。

これは、私が現在使用している Jquery コードです。

$('.account').click(function () {
   var acc = $(this).data("name");
    var sel = $('.account-select').data("name");           
    if (acc === sel) {
    }
    else {
         $('.account-hidden-li').append('<li class="account-select" data-name="'+ $(this).data("name") +'">' + $(this).data("name") + '<a class="close bcn-close" data-dismiss="alert" href="#">&times;</a></li>');
    }
});

そしてHTML:

<ul>
    <li><a class="account" data-name="All" href="#">All</a></li>
    <li><a class="account" data-name="John Smith" href="#">John Smith</a></li>
</ul>

<ul class="account-hidden-li">
    <ul>
4

2 に答える 2

3

を使用し.each()て、それらすべてを反復処理できます。

var acc = $(this).data('name');
$('.account-select').each(function(){
  var sel = $(this).data('name');
  if (acc == sel){
  }else{
    // $(...).append(...)
  }
});

または、属性セレクターを使用できます。

$('.account-select[data-name="'+acc+'"]') // assuming no `"` in acc otherwise
                                          // you're going to need to escape it

つまり、:not()セレクターを使用して目的を達成することもできます。

var acc = $(this).data('name');
$('.account-select:not([data-name="'+acc+'"])')
  .append(...)

原始的な例

于 2012-09-25T15:38:29.197 に答える
1

お気づきのように$('.account-select').data("name")、最初の要素からのみデータを取得します。.account-selectそれぞれをループして、そのデータを取得する必要があります。

$('.account-select').each(function(i, v){
    var sel = $(v).data('name');
    if (acc === sel) {
        // Do something if they match
    }
    else{
        // Do something else if they don't
    }
});
于 2012-09-25T15:36:13.287 に答える