2012-01-09 26 views
1

こんにちは、次の問題 ループ内の各divのid属性文字列が必要です。ここで

<div id="3r23r32_ProgressBar" class="upload-progress-bar"></div> 
<div id="gfdgfdgfd_ProgressBar" class="upload-progress-bar"></div> 

は何も-.-

$.each("div.upload-progress-bar", function (index,value) { 

    alert(index); 

    $('#' + value + 'ProgressBar').animate({ 
     'width': 10 + '%' 
    }, 250).animate({ 
     'width': 25 + '%' 
    }, 250).animate({ 
     'width': 65 + '%' 
    }, 250).animate({ 
     'width': 95 + '%' 
    }, 250).animate({ 
     'width': 100 + '%' 
    }, 250); 
}); 
+3

'$ .each()'は使われていません...代わりに '$(sel).each()'を意味するのではないですか? –

+0

@ 32bitkid- $ .each()*はそのように使うことができます;)。 –

+1

'$( 'div.upload-progress-bar')'セレクタ...で '.animate'を呼び出すだけではどうですか? – RYFN

答えて

1

valuetryを使用して、この

$("div.upload-progress-bar").each(function (index,elem) { 

    var value = $(elem).attr("id"); // try elem.id, i guess that would work too 

    $('#' + value).animate({ // you must remove ProgressBar it is included in the value variable 
     'width': 10 + '%' 
    }, 250).animate({ 
     'width': 25 + '%' 
    }, 250).animate({ 
     'width': 65 + '%' 
    }, 250).animate({ 
     'width': 95 + '%' 
    }, 250).animate({ 
     'width': 100 + '%' 
    }, 250); 
}); 
+1

jqueryオブジェクトには 'id'属性がありません。 – tobyodavies

+0

ops私の悪い私は急いでその間違いをしました.. –

+0

elem.idは機能しません –

2
this.id 

はあなたの現在の要素のid属性のテキストを取得しませんし、私のサンプルjqueryのコードです。適切な.each()

例...

$("div.upload-progress-bar").each(function (index,value) { 
    alert(this.id); 
}); 

は、おそらくあなたのユースケースを助ける答えをDarhazer's Answerを参照してください。

+0

私はdivsを忘れてしまいました。私の質問を確認してくださいありがとう:) –

+0

@SaschaHeim私は、私の答えはあなたが欲しいものをやります。 – jondavidjohn

+1

SaschaHeimが正しい - これはあなたが望むことをするでしょう。 @ Darhazerの答えは、セレクタ文字列を再構築するのではなく、あなたがやりたいことです。どちらの場合も、キーワード「this」が存在することに注意してください。 jQueryのようなライブラリを使用しているかどうかにかかわらず、JavaScriptの重要な概念です。 – maxedison

-2

これを試してみてください:コールバック関数で

$("div.upload-progress-bar").each(function (index,value) { 

    alert($(this).attr("id")); 

    $('#' + value + 'ProgressBar').animate({ 
     'width': 10 + '%' 
    }, 250).animate({ 
     'width': 25 + '%' 
    }, 250).animate({ 
     'width': 65 + '%' 
    }, 250).animate({ 
     'width': 95 + '%' 
    }, 250).animate({ 
     'width': 100 + '%' 
    }, 250); 
}); 
+2

ここではjQueryを完全に不要にしています... 'this.id'はジョブには完全に適しています。 – jondavidjohn

+0

これは、JSの紹介が実際にjQueryを通じて行われるときに起こります。悪いことではなく、私が学んだことです。しかし、ある時点で純粋なJSを学ぶ必要があります。 – maxedison

+2

-1あなたはOPと同じ間違いをしています。 '$ .each(" div.upload-progress-bar "、')は文字列中の文字を(それを許可するブラウザで)反復しますDOM選択は行いません –

7

、あなたが要素をアニメーション化するために、まったくIDを必要としないのでthisは、あなたがトラフをループしている各要素を指します。ただ、$(this).animate(

を呼び出すしかし、div要素の谷反復処理するために、あなたはあなたは$(...).eachをしたい$("div.upload-progress-bar").each(function(

+0

+1この1つの木のために森林を逃した、良い呼び出し。 – jondavidjohn

+0

私はこれが素晴らしいことに同意しますが、OPは各要素にIDを取得する方法について質問しました。もし彼がまだその情報を知る必要があれば? –

+0

@MatthewPatrickCashatt [XY](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)の問題を参照してください。 OPはループ内で不要なjQuery呼び出しを行います。もちろん、彼が実際にIDを必要とするならば、彼は他の答えで見つけるでしょう;) –

1

使用する必要はありませ$.each

あなたが実際にidのを必要とするようにそれはまた私には見えません。すべて - this

$("div.upload-progress-bar").each(function (index,value) { 
    //use `this` and `this.id` if you _really_ need the id 
    $(this).animate(
     //... 
    ) 
}); 
関連する問題