私のリストは現在、次のように構成されています。
<ul id="list-items">
<li class="cat">
<a href="#">Cat #1</a>
(2)
<ul class="children">
<li class="child-cat">
<a title="#">Sub cat #1</a>
(1)
</li>
</ul>
</li>
<li class="cat">
<a href="#">Cat #2</a>
(2)
<ul class="children">
<li class="child-cat">
<a title="#">Sub cat #2</a>
(1)
</li>
</ul>
</li>
</ul>
アンカータグの後の括弧内の数字を取得したい。だから私はこれをしました:
jQuery('#list-items li').each(function() {
b = jQuery(this).first().contents().filter(function() {
return this.nodeType == 3;
}).text();
});
最後のタスクでは、上記の出力をリストアイテムの各アンカータグに追加する必要があります。だから私はこれを試しました:
var b = [];
jQuery('#list-items li').each(function() {
b = jQuery(this).first().contents().filter(function() {
return this.nodeType == 3;
}).text();
});
jQuery('#list-items li a').append(function(i) {
jQuery(this).append(b[i]);
});
それはうまくいかないようです。そして、私は理由がわかりません..誰かが私のスクリプトを変更するのを手伝ってくれる?ありがとう。
簡単な解決策
jQuery('#list-items li > a').append(function() {
var next = this.nextSibling;
if(next){
return $.trim($(next).text())
}
});
デモ:フィドル
配列を作成したい場合はb
、.map()
代わりに推奨します.each()
var b = jQuery('#list-items li a').map(function() {
var next = this.nextSibling;
if(next){
return $.trim($(next).text())
}
});
jQuery('#list-items li a').append(function(i) {
jQuery(this).append(b[i]);
});
デモ:フィドル
コードの問題は、最初の各ループ内でb
、配列に値を追加する代わりに、をオーバーライドしていたことでした。b
var b = [];
jQuery('#list-items li').each(function() {
b.push(jQuery(this).first().contents().filter(function() {
return this.nodeType == 3;
}).text());
});
jQuery('#list-items li a').append(function(i) {
jQuery(this).append($.trim(b[i]));
});
デモ:フィドル
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加