3

基本的にここに私のスクリプトがあります:

http://jsfiddle.net/JJFap/42/

コード -

jQuery(document).ready(function() {
    var rel = new Array();
    var count = 0;
    jQuery(".setting").each(function() {
        rel[count] = [];
        if(jQuery("span").attr("rel")) {
            rel[count].push(jQuery("span").attr("rel"));
        }  
        console.log(count);
        count++;
    });               
    jQuery("body").text(rel);
    console.log(rel);
});​

<div class="setting">
    <span rel="Variable">Variable</span>
    <span rel="Item">Item</span>
    <span rel="Something">Something</span>
</div>
<div>
    <span rel="Smth">Smth</span>
    <span>Sec</span>
</div>
<div class="setting">
    <span>Second</span>
    <span rel="first">First</span>
    <span rel="Third">Third</span>
</div>

私の質問は、なぜ変数、変数を表示するのですか?

Variable, First を表示させたいのですが、できません。

基本的に私が達成したいのは、rel属性配列を持つ各div.settingスパン要素を挿入する新しい配列を作成することです。

したがって、基本的にこの例では出力する必要があります-

Array (

   Array[0] => "Variable","Item","Something";

   Array[1] => "first","Third";

)

私の言いたいことを理解していただければ幸いです:)

編集:

私の他の例では、最初の各関数内に jQuery("span").each(function() ... を追加しようとしましたが、すべてのスパン要素の 2 つの完全な配列を rel で出力しました。異なるクラス / ID を持つことはできませんすべてが同じクラスを持つため、各 div 要素に対して。

4

4 に答える 4

5

jQuery('span')ページ内のすべてのスパンを検索しrel、最初のスパンの属性を引き出します。そのスパン検索のコンテキストを提供しないため、ドキュメント内で常に同じ #1 スパンを取得します。

于 2012-07-17T14:15:00.443 に答える
4

これを使用する必要があります:

    jQuery('span',this).each(function() {
        rel[count] = [];
        if (jQuery(this).attr("rel")) {
            rel[count].push(jQuery(this).attr("rel"));
        }
        console.log(count);
        count++;
    })

これの代わりに:

    rel[count] = [];
    if(jQuery("span").attr("rel")) {
        rel[count].push(jQuery("span").attr("rel"));
    }  
    console.log(count);
    count++;

http://jsfiddle.net/mblase75/JJFap/52/

秘訣は、1 秒を使用して各タグ内.eachのすべてのタグをループすることです。元のコードでは を使用していましたが、これは毎回ドキュメントの最初のタグを取得するだけでした。span<div class="setting">jQuery("span")span

于 2012-07-17T14:14:52.157 に答える
1

メソッド内には、.each()このコードが数回あります: jQuery("span").attr("rel"). このコードは、ページ上のすべて spanのタグを検索するだけです。メソッド内に貼り付けると、コレクション内の最初の jQuery オブジェクト.push()の属性の値がプッシュされます。rel代わりに、次のようなことを行います$(this).find('span')。これにより、メソッドが繰り返し処理している現在の要素spanの子孫であるタグが検索されます。.setting.each()

于 2012-07-17T14:16:35.663 に答える
1

前述の内容に加えて、使用時にcountandを削除したり、セレクターに追加するときに を削除したりすることもできます。push()jQuery.fn.map()if[rel]

jQuery(document).ready(function() {
    var rel = [];
    jQuery(".setting").each(function() {
        rel.push(jQuery(this).find('span[rel]').map(function() {
            return this.getAttribute('rel');
        }).get());
    });               
    jQuery("body").text(rel);
    console.log(rel);
});
于 2012-07-17T14:17:41.180 に答える