2

所以我有:

<li id="foo">
   <span> bar </span>
   <ul>
   <li>
      <span id="1234"></span>
   </li>
   <li>
      <span id="5678"></span>
   </li>

   </ul>
</li>

我需要连接跨度 ID 并使 var foobar = "12345678"

PS 我需要从 ID 为“foo”的顶部 Li 开始工作,因为跨度 ID 可以是动态/未知的。

谢谢!

4

5 回答 5

4

尝试这个:

var foobar = "";
$('#foo span[id]').each(function(){
   foobar += this.id
})
于 2012-08-09T16:43:17.747 回答
1

用这个:

var foobar = '';
$('#foo li span').each(function() { 
    foobar += $(this).attr('id'); 
});

JSFIDDLE

于 2012-08-09T16:43:21.190 回答
1

其他人都在使用.each(). 这有点简单.map()...

var ids = $.map($("#foo span[id]"), function(el) {
                                       return el.id;
                                    }).join("");

我还使用了has-attribute选择器来确保您只获取span具有 ID 属性的元素。

演示:http: //jsfiddle.net/rgNRH/


或者你可以使用原生Array.prototype.map...

var ids = $("#foo span[id]").toArray()
                            .map(function(el) {
                                    return el.id;
                                 }).join("");

演示:http: //jsfiddle.net/rgNRH/1/


好处.map()是它不依赖任何外部变量,因此您可以保存和重用该函数...

var mappers = {
    getIDs: function(el, i) { return el.id; }
    /* other mapping functions */
};

...然后在需要时使用它...

var ids = $.map($("#foo span[id]"), mappers.getIDs).join("");
于 2012-08-09T16:57:32.230 回答
1

像这样的东西:

window.concat = "";
$('#foo li span').each(function () {
  window.concat += $(this).attr('id');
});
console.log(window.concat);

小提琴:http: //jsfiddle.net/Nfsg5/1/

于 2012-08-09T16:42:30.380 回答
0
var ids = '';
$('#foo li span').attr('id',function() {
    ids += this.id;
});

工作样本

于 2012-08-09T16:43:53.473 回答