1

これはかなり初心者の質問だと思いますが、私は今何時間もそれについて考えてきました、そして私はそれを理解することができません。

以下のこのhtmlコードを使用して、.project_nameスパンと.locationスパンを同じスパンにマージする必要があります。

<ol id="projects" class="wide">
<li class="dontsplit" id="1234">
    <a href="/projects/1234" class="thickbox dontsplit">
        <span class='project_name dontsplit'>First Project Name</span>
        <span class='location dontsplit'>Combined with First Location</span>
        <span class='extra-info-span1'></span>
    </a>
</li>
<li class="dontsplit" id="1233">
    <a href="/projects/1233" class="thickbox dontsplit">
        <span class='project_name dontsplit'>Second Project Name</span>
        <span class='location dontsplit'>Combined with Second Location</span>
        <span class='extra-info-span2'></span>
    </a>
</li>
<li class="dontsplit" id="1232">
    <a href="/projects/1232" class="thickbox dontsplit">
        <span class='project_name dontsplit'>Third Project Name</span>
        <span class='location dontsplit'>Combined with Third Location</span>
        <span class='extra-info-span3'></span>
    </a>
</li>
</ol>​

スパンの最初のセットに対して正しく実行するこのjQueryコードがありますが、残りのスパンを埋めるために最初のスパンのコンテンツを引き続き使用します。

var s1 = $('.project_name').html();
$('.project_name').remove();
$('.location').prepend(s1 + ' ');

.each()または同様のものを使用する必要があると思いますが、それを機能させるための正しい構文を理解できません。これが私がこれまでに持っているものを含むjsFiddleです。

何か案は?おそらくかなり簡単です。

4

4 に答える 4

2

<span>タグを保持したい場合...(フィドル

$(".location").each(function() {
   $(this).prepend(" ").prepend($(this).prev());
});


そして、ここで、タグを保持したくない場合は...(フィドル<span>

$(".location").each(function() {
    $(this).prepend($(this).prev().text() + " ");
    $(this).prev().remove();
});​


.project_nameもちろん、これは代わりにスパンをループすることによって行うことができ.locationます。それが実際に維持されているので、私はそれを使用することを好みます。

これを行うと、現在繰り返されているオブジェクトに到達するために$("selector").each(function() { });使用できます。$(this)

于 2012-07-31T14:38:11.660 に答える
0

自分のコードを使用したい場合:

$('.dontsplit').each (function () {
  var html = $('.project_name', this).html();
  $('.project_name', this).remove();
  $('.location', this).prepend(s1 + ' ');
});

そうでない場合、私はこのコードを好みます(何が起こっているのかがより明確であり、読みやすさが重要だと思います):

$('.dontsplit').each (function () {
  var text_1 = $('.project_name', this).text();
  var text_2 = $('.locaton', this).text();

  $('.project_name', this).remove()
  $('.locaton', this).remove();

  var text = text_1 + text_2           
  $('<span></span>').text(text_1 + text_2).appendTo(this);
});
于 2012-07-31T14:38:22.160 に答える
0

これはうまくいくはずです

var spantext="";

spantext += $('.project_name').text() + ", " + $('.location').text();
$('.project_name').remove();
$('.location').text(spantext);
于 2012-07-31T14:40:44.330 に答える
0

これを試して :

$('.project_name').each(function(el){
 var s1 = el.html();
 el.remove();
 $(el.parent(),'.location').prepend(s1 + ' ');
})
于 2012-07-31T14:43:10.067 に答える