通过点击获取div id

时间:2012-02-13 23:11:13

标签: javascript jquery html5

我正在使用$('.startb').click(function() { var myId = $(this).attr("id"); });来捕获id“startb1”我需要添加什么来通过类“flashObj”捕获id“test1”,因为它们都在同一个div容器中“audioContainer”

<div class="audioContainer">
            <div class="audioTitle">hi</div>
            <div class="playerHolder">
            <div class="startb" id="startb1" rel="Audio/004_IAM_God_is_Love.mp3"><img src="dbs/images/start.png" width="40" height="40" /></div>
            <div class="flashObj" id="test1"></div>
            <div class="mp3Logo"><a href="Audio/004_IAM_God_is_Love.mp3"><img src="dbs/images/mp3_off.gif"/></a></div>
            </div>
</div>

4 个答案:

答案 0 :(得分:2)

var myId = this.id;
var otherId = this.parentNode.querySelector(".flashObj").id;

这种获取“startb1”id的方法的效率大约是你的15倍,因为顺便说一下jQuery必须经过多少步骤来创建$(this)对象。

此外,IE8支持querySelector,而getElementsByClassName则不支持。{/ p>

如果需要IE7及以下版本且结构可靠(即它始终是您需要的第四个孩子div),请使用:var otherId = this.parentNode.children[3].id;

答案 1 :(得分:2)

您可以搜索具有班级flashObj的div的兄弟姐妹:

$('.startb').click(function() { 
   var myId = $(this).attr("id"); 
   var flashObjID = $(this).siblings('.flashObj').attr('id');
});

答案 2 :(得分:1)

如果您使用的是最新的jQuery版本,请使用.on()而不是.click():

$(".audioContainer").on("click", ".startb", function(e){
    var _this = $(this);
    var id = _this.attr("id");
    var oId = _this.closest(".audioContainer").find(".flashObj").attr("id");
}

现在,您还可以映射多个事件,保留事件以供日后使用,甚至将数据传递给event.data对象等。

阅读详情:jQuery .on()

答案 3 :(得分:0)

假设您想要使用相同的“点击”事件,以下应该可以解决问题:

$('.startb').click(function() {
    var myId = $(this).attr("id");
    var flashID = $(this).parent().find(".flashObj").attr("id");
});