2016-08-05 132 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 
}); 

例如,如果点击spanpath c的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

不错,我只是建议使用andBack而不是andSelf(作为它的废弃版) – walmik

+0

@walmik你是对的。它改变了。 – RRK

+2

'和回扣'或'加回扣'? – 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>

0

您可以使用和andSelf方法在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(); 

})。