2012-02-13 170 views
0

我正在使用$('.startb').click(function() { var myId = $(this).attr("id"); });來捕獲id「startb1」我需要添加什麼,以便通過使用事實它們都在同一個div中的類「flashObj」來捕獲id「test1」容器「audioContainer」通過點擊獲取div ID

<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> 

回答

2

你可以搜索具有類flashObj股利的兄弟姐妹:

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

dang擊敗了我。我會用這個片段。 – Jlange 2012-02-13 23:15:24

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

讓「startb1」 id爲約150倍比你的更有效,由於jQuery有要經過剛創建$(this)對象的步驟數量的這種方法順便一提。

另外,IE8支持querySelector,而getElementsByClassName則不支持。

如果需要IE7及以下版本,並且結構可靠(即它總是您需要的第四個孩子div),請使用:var otherId = this.parentNode.children[3].id;

+0

+1使用更爲高效'this.id '而不是詳細和低效的$(this).attr(id)' – RobG 2012-02-14 01:21:29

0

假設你想使用相同的「click」事件,下面應該做的伎倆:

$('.startb').click(function() { 
    var myId = $(this).attr("id"); 
    var flashID = $(this).parent().find(".flashObj").attr("id"); 
}); 
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"); 
} 

否w ^你也可以映射多個事件時,請對後來事件,甚至可以將數據傳遞到event.data對象等

更多詳情:jQuery .on()