0

次のように、JSON 呼び出しから要素を作成してリストを作成します。msg.id は、li の ID を設定するために使用されることに注意してください。

                // create variations on somecharacter_id for id so that clicking upon any element reveals associated message id - see clickedId in .on(....)
                for (i = 0; i < messages.length; i++) {
                    var msg = messages[i];
                    var msgString = '<li id="' + msg.id + '" class="msgbox todo-content"><div class="todo-icon fui-bubble-16"></div><div class="todo-content"><h4 class="todo-name">';
                    msgString += msg.sendfrom;
                    msgString += '</h4>' + msg.subject;
                    msgString += '<div style="font-size:x-small;color:#bdc3c7;">' + parseTime(msg.timestamp_string) + '</div></div></li>';
                    $('#message-list').append(msgString);
                }

クリックされた関連行の msg.id を取得したいので、li にはクラス名 .msgbox が与えられ、.msgbox で .on() イベントを作成しました。ただし、li 内にはさまざまな div があります。li内の何かをクリックすると、.onイベントが発生します(これは予想される動作だと思います)。li 内の には ID がないため、alert(event.target.id) は null を表示します。関連する ID を取得するために、li 内の各子要素に ID を追加する必要がありますか? きっともっと良い方法があります。

 $('.msgbox').on('click', function (event) {                               // example 

                // get id
                var clickedId = event.target.id;

                alert(clickedId);
            });
4

1 に答える 1

3

交換

var clickedId = event.target.id;

var clickedId = this.id;

クリックされた最も正確な要素には興味がありませんがli、イベントハンドラーをバインドし、クリックされた要素に関心があります。この要素はthisイベント ハンドラにあります。

于 2013-03-18T18:09:59.903 に答える