我需要提取部分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;
});
例如,如果单击第三个spant
,则结果应为:
<span class='spant' data-id=0>HOME</span>
<span class='spant' data-id=5>HOME</span>
<span class='spant' data-id=9>HOME</span>
我该怎么做?
答案 0 :(得分:3)
答案 1 :(得分:3)
您可以使用prevAll()
jquery方法 - 并包含点击的使用add(this)
。
使用spant
功能点击map()
时,请参阅下面的演示,其中列出了标记:
$(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>
答案 2 :(得分:2)
因为您已经在使用jquery,所以我建议seq :: [Int]->[Int]
seq (x:xs) if (mod x 5 == 0 || mod x 7 == 0 || mod x 9 == 0) then (x: seq xs)
else (seq xs)
我没有对此进行测试,但它看起来可能类似:
.prevAll()
答案 3 :(得分:2)
此工作正常source,在浏览器中打开开发人员模式以显示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)
})