如何将html标记的一部分作为变量

时间:2017-01-12 17:27:07

标签: javascript jquery html jquery-selectors

我需要提取部分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>

我该怎么做?

4 个答案:

答案 0 :(得分:3)

这应该为您提供解决方案

{{1}}

工作小提琴 https://jsfiddle.net/xq44f1xa/

答案 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)
})