0

私はjQueryを学んでおり、ループとクラスへの1の追加について助けが必要です。

私はこれまでのところこれを持っています。

var $$ = jQuery;
$$(document).ready(function() {
var i = 1;
for (i < .dropdown_2columns ul li.drop) {
$$(".dropdown_2columns ul li.drop").addClass("dropfirst-" + i);
$$(".dropdown_2columns ul li .dropdown_2columns").addClass("tier3");
$$(".dropdown_2columns ul li .tier3").removeClass("dropdown_2columns");
$$(".dropdown_2columns .col_2 ul").addClass("firstsub");
$$(".dropdown_2columns .col_2:last-child").addClass("hide"); 
i++;
})
});

HTML

<div class="dropdown_2columns">
<div class="col_2">
<ul class="firstsub">
<li class="drop dropfirst"></li>
<li class="drop dropfirst"></li>
<li class="drop dropfirst"></li>
<li class="drop dropfirst"></li>
<li class="drop dropfirst"></li>
<li class="drop dropfirst"></li>
<li class="drop dropfirst"></li>
</ul>
</div>

dropfirst classfor eachの数を増やしたいと思いますli.dropfirst element。私が間違っていることは何ですか?PS私はこのサイト全体を調べて助けを求めましたが、私が間違っていることを見つけることができませんでした.

ありがとう

4

3 に答える 3

1

これは有効なステートメントではありません:

for (i < .dropdown_2columns ul li.drop)

次のようになります。

for (var i=1; i < $('.dropdown_2columns ul li.drop').length; i++)

さらに、この構文を使用すると、iがインクリメントされるため、ループ内で行う理由はなく、ループを作成するプロセスでi++定義しました。i

$$その関数を作成したり、投稿していないコードで何かをエイリアス化したりしない限り、というようなことはありません。

ここで、コードから何をしようとしているのかが 100% 明確であるとは言えません。あなたがやりたいことは、Jonathan と ComputerArts によって投稿されたソリューションに似ていると思いますが、よくわからないので、実装例に任せて、明らかなエラーを指摘するだけにとどめます。

于 2013-03-01T02:42:46.117 に答える
0

代わりにそれぞれを使用

$('.dropdown_2columns ul li.drop').each(function(i,v){
  $(".dropdown_2columns ul li.drop").addClass("dropfirst-" + i);
  $(".dropdown_2columns ul li .dropdown_2columns").addClass("tier3");
  $(".dropdown_2columns ul li .tier3").removeClass("dropdown_2columns");
  $(".dropdown_2columns .col_2 ul").addClass("firstsub");
  $(".dropdown_2columns .col_2:last-child").addClass("hide"); 
});

デモ

于 2013-03-01T02:46:04.313 に答える
0

これでうまくいくはずです。フィドル

$(document).ready(function () {
    $('.dropdown_2columns').each(function (i) {
        $(this).find('ul li.drop').addClass('dropfirst-' + i);
        $(this).find('ul li .dropdown_2columns').addClass('tier3').removeClass('dropdown_2columns'); //there are no elements like this in your HTML
        $(this).find('.col_2 ul').addClass('firstsub');
        $(this).find('.col_2:last-child').addClass('hide');
    })
});

using.each()はループを作成します。関数にパラメーターを渡すことができます...この場合、カウンターである「i」です。

$(this)要素を参照し、.dropdown_2colums操作する子要素を見つけます。

また、弾丸がネストされています...閉じるのを忘れていたと思います<li></li>

于 2013-03-01T02:46:57.123 に答える