Javascript 如何达到这些跨度';s并连接其id';s
因此,我:Javascript 如何达到这些跨度';s并连接其id';s,javascript,jquery,Javascript,Jquery,因此,我: <li id="foo"> <span> bar </span> <ul> <li> <span id="1234"></span> </li> <li> <span id="5678"></span> </li> </ul> </li> 酒吧
<li id="foo">
<span> bar </span>
<ul>
<li>
<span id="1234"></span>
</li>
<li>
<span id="5678"></span>
</li>
</ul>
</li>
酒吧
-
-
我需要连接span id并使var foobar=“12345678”
另外,我需要从id为“foo”的顶部Li开始工作,因为跨度id可以是动态的/未知的
谢谢 类似这样:
window.concat = "";
$('#foo li span').each(function () {
window.concat += $(this).attr('id');
});
console.log(window.concat);
小提琴:试试这个:
var foobar = "";
$('#foo span[id]').each(function(){
foobar += this.id
})
使用以下命令:
var foobar = '';
$('#foo li span').each(function() {
foobar += $(this).attr('id');
});
其他人都在使用
.each()
。使用.map()
这有点简单
var ids = $.map($("#foo span[id]"), function(el) {
return el.id;
}).join("");
var ids = $("#foo span[id]").toArray()
.map(function(el) {
return el.id;
}).join("");
我还使用has属性选择器来确保只获得具有ID属性的span
元素
演示:
或者您可以使用本机的
数组.prototype.map
var ids = $.map($("#foo span[id]"), function(el) {
return el.id;
}).join("");
var ids = $("#foo span[id]").toArray()
.map(function(el) {
return el.id;
}).join("");
演示:
.map()
的优点在于它不依赖于任何外部变量,因此您可以保存并重用该函数
var mappers = {
getIDs: function(el, i) { return el.id; }
/* other mapping functions */
};
…然后在需要时使用它
var ids = $.map($("#foo span[id]"), mappers.getIDs).join("");
这是可以的,但它会击中顶部的酒吧。这可能是OP的意图,但看起来他想将span的嵌套在嵌套的LITIS中是一个半解决方案,因为他还想构造变量名“foobar”。或者,OP需要在他的值选择中找到更多的变化…:)谢谢大家,很抱歉,我上面的代码帖子没有真正显示我在做什么。实际上br也有一个id,比如说“7890”。有多个li的id=“foo”,所以我举了一个坏例子。我认为这将是一个混乱的刮掉,所以我会选择这个作为这个问题的答案。但我会为一个更复杂的情况开始另一个问题,但更接近我所寻找的。。。谢谢各位。关于其他问题,请参考