2016-04-06 18 views
1

split()を1つの値でしか動作させる方法はありますか?split()は1つの値でしか機能しません

あなたは122その後、スプリット何も返さないの単一の文字列に次のコードでデータ-IDSを変更し、それが122

https://jsfiddle.net/mghwscox/

var ids = $('div').data('ids').split(','); 
 

 
$(ids).each(function(key, value) { 
 
\t $('div').append('Value: ' + value + '<br>'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div data-ids="122,154,344"></div>

+0

前に文字列に変換してください、詳しく説明する気?これは、データ属性から値を取り出す際に重要な「つかの間」を示すのに役立つ良い質問です。 – jeffdill2

答えて

3
var ids = $('div').data('ids').toString().split(','); 

$(ids).each(function(key, value) { 
    $('div').append('Value: ' + value + '<br>'); 
}); 
を返す必要がある場合は

私がStrを追加したことに注目してくださいあなたのids宣言でing()。

+4

なぜ '.toString()'を追加したのかは、おそらくAlexにとって役に立ちますか? – j08691

+0

"ids"行はどのような問題と関係していますか? – epascarello

+0

公正なコメントですが...私は知りたいとは思っていませんが、推測することしかできません。私は前に同様の問題を抱えており、これをこのように解決しました。私はそれを念頭に置いているので、それはまともではないようです(すなわち、粗い解決策ではありません)。 –

3

jQueryでは、値をプレーンな配列として格納できます。

<div id="source" data-ids="[122,154,344]"></div> 
<script> 
    var list = $("#source").data('ids'); 
    console.log(list.length); //3 
</script> 

作業スニペット:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="source" data-ids="[122,154,344]"></div> 
 
<div id="target"></div> 
 

 
<script> 
 
    var list = $("#source").data('ids'); 
 
    $("#target").html(JSON.stringify(list) + " has " + list.length + " elements"); // 3 
 
</script>

注: jQueryのNumberオブジェクトと「ナンバーに1つの番号を変換するので、あなたのコードは、1つの番号で失敗した理由がありますオブジェクトにはsplitメソッドがありません。

3

data()はデータを読み込むときに型変換を試みます。だからあなたには2つの選択肢があります。

文字列を使用するにはdata()を使用し、toString()を使用する必要があります。

var ids = $('div').data('ids').toString().split(','); 

その他のオプションは、data()を使用せず、attr()を使用して値を読み取ることです。

var ids = $('div').attr("data-ids").split(','); 
0

ユーザーは、それが数としてスプリット()メソッドは、数値のために存在しないので取られる唯一の番号を与え、それはエラーを返します。カンマ区切りの値を指定すると、文字列として扱われ、うまく動作します。

var ids = $('div').data('ids'); 
 
console.log(ids,typeof ids); 
 
ids = ids.toString().split(',');; 
 

 
$(ids).each(function(key, value) { 
 
\t $('div').append('Value: ' + value + '<br>'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div data-ids="122"></div>

0

downvoted誰に分割

var ids = ($('div').data('ids')+'').split(','); 


$(ids).each(function(key, value) { 
    $('div').append('Value: ' + value + '<br>'); 
}); 
関連する問題