javascript - jQuery/JavaScript : Avoid unique ID's for each row in a table?

标签 javascript jquery

我不确定我这样做是否正确。我有一个表格,其中填充了行,每行代表播放列表中的一首歌曲。现在,我为每行分配一个唯一的 ID,并为每个 ID 分配一些 jQuery.data()。

        html += '\
            <tr id="track-' + i + '" class="tracks-row"> \
                <td class="track"><a id="play-'+ i +'" class="play"></a><a id="play2-' + i + '">' + song.song_track + '<span class="mix-style">' + song_mix + '</span></a></td> \
                <td class="artist">' + song.song_artist + '</td> \
                <td class="favourites-holder"><a id="favourite-' + i + '" class="favourites"></a></td> \
                ' + delete_holder + ' \
            </tr> \
        ';

如您所见,每一行都有一个 ID,如 track-1、track-2 等。

是否有另一种方法可以填充这样的播放列表,而无需为每个轨道分配唯一的 ID,或者这是应该如何完成的?每个轨道都有一些如下属性:

        $("#track-" + i).data("song_id", song.song_id);
        $("#track-" + i).data("song_artist", song.song_artist);
        $("#track-" + i).data("song_track", song.song_track);
        $("#track-" + i).data("song_mix", song.song_mix);
        $("#track-" + i).data("ps_id", song.ps_id);

...还有每个轨道的 .click 事件,它允许用户播放、排序、拖动等...只是感觉我做错了:)?

最佳答案

您可以存储对循环中每个生成行的引用(假设 html 仅包含单行的 HTML):

var row = $(html).appendTo("#table");
var data = row.data();

data["song_id"] = song.song_id;
data["song_artist"] =  song.song_artist;
data["song_track"] = song.song_track;
data["song_mix"] = song.song_mix;
data["ps_id"] = song.ps_id;

row.click(function(){...});

元素有一个 ID 也不错。但如果您有一个引用并且不一遍又一遍地使用 jQuery 的选择器引擎,那么使用引用肯定会更快。

此外,如果您将相同的点击处理程序附加到每一行,最好将一个附加到表格并委托(delegate)它,例如

$('#table').delegate('tr', 'click', function(){...});

关于javascript - jQuery/JavaScript : Avoid unique ID's for each row in a table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3346736/

相关文章:

javascript - jQuery DataTable 中的引导日期选择器在 Laravel 应用程序中不起作用

javascript - 如何在鼠标向下滚动时使 div 滚动速度比 html 的其余部分更快?

javascript - 异步函数执行顺序

jquery - selectize 不适用于动态 knockout 选项绑定(bind)

javascript - 其中html属性我可以直接编写javascript代码作为值

javascript - Jquery:fromcharcode() 将整数转换为字符的替代方法

javascript - 如何在节点red中设置环境变量?

javascript - 似乎无法通过 Google map 上的标记点击来执行任何操作

javascript - jQuery - 可调整宽高比仅适用于一个 handle

javascript - 如何在复选框中组合相同命名的值并为其指定默认值