我正在尝试从一些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/
将
你的.map
函数替换为:
function() { return this.id.replace('message_', ''); }
如果您确定 ID 的格式,则可以使用以下命令:
.map(function() { return this.id.split('_')[1]; })
附言:将整个代码置于问题之中。它不长,如果你的jsFiddle发生了什么事,那么其他用户将无法理解答案。
将其修改为如下所示:
$("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);
});
这是一个
很多但是:
$("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);
});
我不认为它的 id 必须具有 id message_ 的 id 只是一个数字并将其转换为数字(如果您想返回一个带有数字的数组),如果没有找到数字,它将返回 0。