0

我正在尝试从一些 li 元素中获取 id。但我不确定如何拆分数组中的结果。所以 message_1 变成 1, message_2 变成 2,依此类推。

<ul id="chat_viewport">
<li id="message_1">message</li>
<li id="message_2">message this and that</li>
<li id="message_3">3</li>
<li id="message_4">4</li>
<li id="message_5">5</li>
</ul>


<a href="#" class="test">TEST</a>​


$("a.test").click(function(e) {
e.preventDefault();

var idarray = $("#chat_viewport")
         .find("li") //Find the li in #chat_viewport
         .map(function() { return this.id; }) //Project Ids
         .get(); //ToArray

var biggest = Math.max.apply( null, idarray );

alert(idarray);
});​

我在这里有一个例子http://jsfiddle.net/T5x5d/

4

4 回答 4

1

用这个替换你的.map函数:

function() { return this.id.replace('message_', ''); }
于 2012-07-02T08:41:20.397 回答
0

如果您确定 ID 的格式,则可以使用:

.map(function() { return this.id.split('_')[1]; })

PS 将整个代码置于问题之中。时间不长,如果您的 jsFiddle 出现问题,其他用户将无法理解答案。

于 2012-07-02T08:42:00.243 回答
0

修改它看起来像这样:

$("a.test").click(function(e) {
e.preventDefault();

var idarray = $("#chat_viewport")
         .find("li") //Find the li in #chat_viewport
         .map(function() { return this.id.split('_')[1]; }) //Project Ids
         .get(); //ToArray

var biggest = Math.max.apply( null, idarray );

alert(idarray);
});
于 2012-07-02T08:47:31.183 回答
0

这是一个太多但是:

$("a.test").click(function(e) {
    e.preventDefault();
    var idarray = $("#chat_viewport")
        .find("li") //Find the li in #chat_viewport
        .map(function() {
            var match = /(\d+)/.exec(this.id);
            return match !== null ? parseInt(match[0]) : 0;
         }) //Project Ids
         .get(); //ToArray
    var biggest = Math.max.apply( null, idarray );

    alert(biggest);
});

我不认为它必须具有 message_ 的 id 只是其 id 中的一个数字并将其转换为一个数字(如果你想返回一个带有数字的数组)如果没有找到数字它将返回一个 0。

于 2012-07-02T08:51:02.267 回答