使用ID的可变部分和js

时间:2011-08-29 18:58:06

标签: javascript jquery

我有一个包含8个div的列表:#video1,#video2,...每个点击时都要运行相同的javascript操作,但是有其他id(对于#video1:show#image1,#preview1,... )。

我可以更高效地执行此操作,而不是将相同的代码编写8次但使用其他ID吗?是否可以在单击时将每个#videoX中的第六个字符(数字)作为变量,然后使用 这在代码中?

4 个答案:

答案 0 :(得分:2)

在您的事件处理程序中,您可以提取数字,例如使用regular expression [MDN]

var id = element.id.match(/\d+$/)[0];

然后用它来创建其他元素的ID:

var image_id = "image" + id,
    preview_id = "preview" + id;

另一种选择是将data- attributes分配给元素,并使用它们来存储ID的数字部分。

答案 1 :(得分:1)

请改用班级名称。这样它完全独立于ID。

<div class="videoClick" id="...">...</div>

JS:

$('.videoClick').click(function() {
...
})

答案 2 :(得分:0)

是的,你可以:

$("div[id*='video']").click(function() {
   var numid = $(this).attr("id").replace("video", "");
   alert(numid);
   //...use your numid value
});

检查attribute contains selector

答案 3 :(得分:0)

试试这个

var ids = [#video1, #video2, #video3, #video4, #video5, #video6, #video7, #video8];

$(ids.join(",")).click(function(){
    var imageId = this.id.replace("video", "image");
    var previewId = this.id.replace("video", "preview");
    $("#"+imageId).show();
    $("#"+previewId).show();

});