如何将 html 标记的一部分作为变量
How to get part of html markup as a variable
我需要提取部分 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>
我该怎么做?
因为您已经在使用 jquery,我建议 .prevAll()
我不是在测试这个,但它可能看起来像:
$(document).on('click', '.spant', function () {
var a = $(this).prevAll().html() + $(this).html();
});
这应该可以为您提供解决方案
$('.spant').on('click', function(e) {
var string = "";
var spans = $(this).prevAll().each(function(i, v){ string += v.outerHTML + "\n"; });
string += this.outerHTML;
alert(string);
});
工作fiddle
https://jsfiddle.net/xq44f1xa/
您可以使用 prevAll()
jquery 方法 - 要包含 单击的 也可以使用 add(this)
。
查看下面的演示,当您使用 map()
函数单击 spant
时,您会获得 标记 的列表:
$(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>
这项工作很好 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)
})
我需要提取部分 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>
我该怎么做?
因为您已经在使用 jquery,我建议 .prevAll()
我不是在测试这个,但它可能看起来像:
$(document).on('click', '.spant', function () {
var a = $(this).prevAll().html() + $(this).html();
});
这应该可以为您提供解决方案
$('.spant').on('click', function(e) {
var string = "";
var spans = $(this).prevAll().each(function(i, v){ string += v.outerHTML + "\n"; });
string += this.outerHTML;
alert(string);
});
工作fiddle https://jsfiddle.net/xq44f1xa/
您可以使用 prevAll()
jquery 方法 - 要包含 单击的 也可以使用 add(this)
。
查看下面的演示,当您使用 map()
函数单击 spant
时,您会获得 标记 的列表:
$(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>
这项工作很好 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)
})