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

これは多すぎるが:

$("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 に答える
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 に答える