2017-01-12 4 views
2

변수로 HTML 마크 업의 일부를 얻는 방법 : spant 셋째을 클릭하면,나는 HTML 마크 업의 일부 추출 할 필요가

<div id='path'> 
    <span class='spant' data-id=0>HOME</span> 
    <span class='spant' data-id=5>HOME</span> 
    <span class='spant' data-id=9>HOME</span> 
    <span class='spant' data-id=14>HOME</span> 
    <span class='spant' data-id=11>HOME</span> 
</div> 

JS 예를 들어

$(document).on('click', '.spant', function() { 
    var a = ... // - html of all spant before clicked, including clicked one; 
}); 

을, 결과 해야한다 :

<span class='spant' data-id=0>HOME</span> 
<span class='spant' data-id=5>HOME</span> 
<span class='spant' data-id=9>HOME</span> 

내가 어떻게 할 수 있습니까?

+1

'lt' 셀렉터를 사용하십시오. https://api.jquery.com/lt-selector/ – nurdyguy

+2

@ Zakaria Acharki, 이건 중복되지 않습니다. – sinisake

+1

@Zakaria, 틀렸어. 이 질문은 당신이 링크 한 질문과 공통점이 없습니다. – bonaca

답변

3

prevAll() jquery method를 사용할 수 있으며 을 클릭하면도 사용됩니다. add(this)도 사용합니다.

$(document).on('click', '.spant', function() { 
 
    var a = $(this).prevAll().add(this).map(function() { 
 
    return $(this).get(); 
 
    }).get(); 
 
    console.log(a); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id='path'> 
 
    <span class='spant' data-id=0>HOME</span> 
 
    <span class='spant' data-id=5>HOME</span> 
 
    <span class='spant' data-id=9>HOME</span> 
 
    <span class='spant' data-id=14>HOME</span> 
 
    <span class='spant' data-id=11>HOME</span> 
 
</div>

+1

가장 확실한 답변입니다. –

2

이미 jQuery를 사용하고 있기 때문에, 나는이 테스트 아니에요 .prevAll()

좋을 것하지만 somethinglike 볼 수 있습니다

$(document).on('click', '.spant', function() { 
var a = $(this).prevAll().html() + $(this).html(); 
}); 
+0

@TecBrat, 이건 작동하지 않습니다 ... 테스트는 outerHTML이 필요합니다. 실제로 ... – sinisake

+0

@TecBrat, 작동하지 않습니다. 테스트 해보십시오. – bonaca

+1

@Landaida, 귀하의 의견을 답으로 써주십시오. 그러나 명확하고 앞서 테스트를 마쳐주십시오. – bonaca

3

이 당신에게 솔루션을 제공한다을

$('.spant').on('click', function(e) { 
    var string = ""; 
    var spans = $(this).prevAll().each(function(i, v){ string += v.outerHTML + "\n"; }); 
    string += this.outerHTML; 
    alert(string); 
}); 

작업 바이올린 https://jsfiddle.net/xq44f1xa/

2

이 작품 잘 source, 열린 개발자 모드 :

때 당신 map() 기능을 사용하여 spant를 클릭하면 마크 업의 목록을 얻을 경우 아래의 데모를 참조하십시오 브라우저에서 console.log 결과를 표시하십시오.

$(document).on('click', '.spant', function(){ 
    let befores = $(this).prevAll() 
    ,all = befores.add(this) 
    let html = ''; 
    $(all).each((index, item)=>{ html += item.outerHTML +'\n' }) 
    console.log(html) 
})