2016-08-05 5 views
2
<span class='spanpath'>a</span> 
<span class='spanpath'>b</span> 
<span class='spanpath'>c</span> 
<span class='spanpath'>d</span> 
<span class='spanpath'>e</span> 

JSは、例えば、前述の要素

$('.spanpath').click(function(){ 
var a = html of all preceding spans + html of clicked span 
}); 

のHTMLを取得する方法、結果は

<span class='spanpath'>a</span> 
<span class='spanpath'>b</span> 
<span class='spanpath'>c</span> 

すべてのヘルプすべきですか?

答えて

2

preveAll()を使用してすべての前の項目を取得し、addBack()を使用して、項目自体をオブジェクトに含めます。

$('.spanpath').click(function(){ 
 
    var a = $(this).prevAll('.spanpath').addBack(); 
 
    console.log(a.clone().wrapAll('<p>').parent().html()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<span class='spanpath'>a</span> 
 
<span class='spanpath'>b</span> 
 
<span class='spanpath'>c</span> 
 
<span class='spanpath'>d</span> 
 
<span class='spanpath'>e</span>

+1

ニース、私はちょうどandSelf(廃止予定)の代わりにandBackを使用することをお勧めします。 – walmik

+0

@walmikあなたは正しいです。それは変わった。 – RRK

+2

'andBack'または' addBack'ですか? – bonaca

1

これを試してみてください:

prevAllは、以前のすべての.spanpathを取得し、その後、クリックした.spanpath

$('.spanpath').click(function(){ 
 
var a = $(this).html(); 
 
    var b = ''; 
 
$(this).prevAll('.spanpath').each(function(){ 
 
b = $(this).html() + " " + b; 
 
    
 
}); 
 
var a = b + " " + a; 
 
    alert(a); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span class='spanpath'>a</span> 
 
<span class='spanpath'>b</span> 
 
<span class='spanpath'>c</span> 
 
<span class='spanpath'>d</span> 
 
<span class='spanpath'>e</span>
htmlと同じを連結することができます

0

prevAllandSelfの方法を使用して、すべての要素をjQueryに選択できます。次に各要素を反復処理して、これらの要素内にhtmlのコンテンツを取得します。

$(document).ready(function() { 
 
    $('.spanpath').click(function() { 
 
    var a = ""; 
 
    $(this).prevAll().andSelf().each(function() { 
 
     a += $(this).html(); 
 
     }); 
 
    console.log(a); 
 
    }); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span class='spanpath'>a</span> 
 
<span class='spanpath'>b</span> 
 
<span class='spanpath'>c</span> 
 
<span class='spanpath'>d</span> 
 
<span class='spanpath'>e</span>

andSelf方法はdeprecated以来jQueryバージョン1.8で、それはバージョン3.0で削除されますのでご注意ください。そのため、代わりにaddBackメソッドを使用することをお勧めします。

1

これは、そうでない場合は、すべての前のHTML要素

$( 'spanpathを。')を取得します、良くなります(関数(){

var a = $(this).prevAll(".spanpath").andSelf(); 

を})をクリックします。