2012-06-28 85 views
12

我需要獲取點擊的div的ID。如何使用jQuery獲取已被點擊的div的ID?

現在當我點擊狀態類我返回一個未定義的ID。

這裏是我的javascript代碼

jQuery(document).ready(function() { 
    $(".status").bind('click', $.proxy(function() { 
     var status = $(this).attr('id'); 
     alert(status); 
    }, this)); 
});​ 

和HTML

<div class="status" id="s_1">111111</div> 
<div class="status" id="s_3">33333</div> 
<div class="status" id="s_2">222222</div> 

我應該如何獲得價值正確的ID?

+1

爲什麼'$ .proxy'? – gdoron

+0

需要它我打電話給其他方法 –

+0

ii會給你所有與這個選擇器匹配的元素的id。使用「each」 – speedingdeer

回答

17

我不確定你爲什麼使用$ .proxy。刪除它應該會得到您想要的結果。

$('.status').click(function(event) { 
    var status = $(this).attr('id'); 
}); 

如果你仍然想使用代理服務器,你可以通過event.currentTarget

$(".status").bind('click', $.proxy(function(event) { 
    var status = $(event.currentTarget).attr('id'); 
    alert(status); 
}, this)); 
+0

正如我上面的評論:爲什麼使用jQuery來獲取元素ID?並且在狀態選擇器之前缺少點。 – gdoron

+0

因爲這是他在做什麼。 – digitaldreamer

+1

ummm。你應該修復他的代碼,不要複製它。:) – gdoron

2

訪問點擊的元素如何:

$('div').on('click', function(){ 
    alert($(this).attr("id")); 
}); 

,這都爲的div status類只工作?如果是這樣,請嘗試:

$('div.status').on('click', function(){ 
    alert($(this).attr("id")); 
}); 
+0

恩我沒有downvote,但'div.status'將作爲一個選擇器。 –

+0

是的,這可能會更乾淨,謝謝。 – woemler

+0

現在它還有其他的錯誤,現在正在搜索div中的狀態類的節點。你是jQuery類似嗎? – gdoron

1

使用event.target來引用該元素

jQuery(document).ready(function() { 
     $(".status").bind('click', $.proxy(function(event) { 
      var status = $(event.target).attr('id'); 
      alert(status); 
    }, this)); 
}); 

在行動中看到:http://jsfiddle.net/vNaqR/

+0

非常感謝:) –

+0

注意:你可以使用'var status = event.target.id;'但是我在那部分上跟着你的代碼。 –

0
$('selector').each(function(){ 
    $(this).click(function(){ 
     alert($(this).attr('id')) 
    }); 
}); 
0

代理髮行的說明:

要當心通過使用$ .proxy()。 它使用指定的上下文(這裏是參數2)調用函數(這裏是參數1),而不是使用觸發事件的上下文。

在主要問題中,指定的上下文是$(document)so。 通過這種方式,該函數試圖獲取文檔的ID而不是觸發事件的對象的ID($('。status')元素)。

0

我試圖顯示隱藏div當我點擊按鈕,然後每次用戶點擊按鈕顯示更多的索引。

這不就行了,因爲工作總是空的,如果我在添加模式不能編輯(顯示股利時,它的編輯)

     <li> 
         <button type="button" name="addAnotherButton" class="btnFwd gradient smButtonStyling" 
         onClick="showInput();"> 
          <img src="/Common/web/static/images/add.png" class="smbtnIcon" /> 
          Add Another 
        </button> 
       </li> 

       <li> 
          <c:forEach items="${planInfoList}" var="planInfo" varStatus="status"> 
         <div id="uploadBody[${status.index}]" style='display = none'> 
          <label class="adminFormLabel">Title:</label> 
          <form:input path="planInfoList[${status.index}].title" onfocus="this.select();" maxlength="50" size="30"/> 
          <label class="adminFormLabel">Plan Number:</label> 
          <form:input path="planInfoList[${status.index}].planNumber" size="10" maxlength="10"/> 
         </div> 
        </c:forEach> 
       </li> 

JS:

var found = 0; 
    if ($('#uploadBody' + i).hide()) { 
     for (var i = 0; i < 5; i++) { 
      if (found == 0) { 
       $('#uploadBody' + i).show(); 
      } 
      found++; 
     }  
     } 
0
<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $(".divField").click(function(){ 
     alert("id : " + $(this).attr("id")); 
    }); 

}); 
</script> 
</head> 
<body> 
<h1>For finding id click below text</h1> 
<div id="id1" value="Example 1" class="divField">My id is <b>id1</b></div> 
<div id="id2" value="Example 2" class="divField">My id is <b>id2</b></div> 

</body> 
</html>