2012-06-28 34 views
12

Tôi cần nhận ID của div được nhấp.Làm cách nào để sử dụng jQuery nhận ID của div đã được nhấp vào?

Bây giờ, khi tôi nhấp vào lớp trạng thái, tôi sẽ trả về id không xác định.

Đây là mã javascript tôi

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

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

Làm thế nào tôi sẽ nhận được giá trị id có đúng không?

+1

Tại sao '$ .proxy'? – gdoron

+0

cần nó tôi gọi các phương pháp khác –

+0

ii sẽ cung cấp cho bạn id của tất cả các elemets phù hợp với bộ chọn này. sử dụng "mỗi" – speedingdeer

Trả lời

17

Tôi không chắc chắn lý do bạn sử dụng $ .proxy. Loại bỏ nó sẽ giúp bạn có được kết quả mong muốn.

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

Nếu bạn vẫn muốn sử dụng proxy bạn có thể truy cập vào các yếu tố nhấp qua event.currentTarget

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

Như bình luận của tôi ở trên: Tại sao sử dụng jQuery để lấy id phần tử? và bạn đang thiếu dấu chấm trước bộ chọn trạng thái. – gdoron

+0

vì đó là những gì anh ấy đang làm. – digitaldreamer

+1

ummm. Bạn nên sửa mã của mình không sao chép nó.:) – gdoron

2

Làm thế nào về:

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

Điều này phải làm việc chỉ dành cho các div với lớp status ? Nếu vậy, hãy thử:

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

um Tôi không downvote nhưng 'div.status 'sẽ hoạt động như một bộ chọn. –

+0

Có, điều đó có lẽ sẽ sạch hơn, cảm ơn. – woemler

+0

Bây giờ nó có lỗi khác, điều này bây giờ đang tìm kiếm các nút bên trong một div với lớp trạng thái. Bạn có fimilar với jQuery? – gdoron

1

sử dụng event.target để tham khảo mà yếu tố

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

thấy trong hành động: http://jsfiddle.net/vNaqR/

+0

cảm ơn bạn rất nhiều :) –

+0

LƯU Ý: bạn có thể sử dụng 'var status = event.target.id;' nhưng tôi đã theo dõi mã của bạn trên phần đó. –

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

Giải thích về vấn đề PROXY:

Be carefull bằng cách sử dụng $ .proxy(). Nó gọi một hàm (ở đây tham số 1) sử dụng ngữ cảnh được chỉ định (ở đây tham số 2) thay vì sử dụng ngữ cảnh trong đó sự kiện được kích hoạt.

Trong câu hỏi chính, ngữ cảnh được chỉ định là $ (tài liệu). Bằng cách này, hàm cố gắng lấy ID của tài liệu thay vì ID của đối tượng mà sự kiện được kích hoạt (phần tử $ ('. Status')).

0

Tôi đang cố gắng hiển thị div ẩn khi tôi nhấp vào nút, sau đó mỗi lần người dùng nhấp vào nút sẽ hiển thị nhiều chỉ mục hơn.

Đó không làm việc kể từ khi nằm trong danh sách luôn là rỗng nếu tôi vào chế độ add không thể chỉnh sửa (hiển thị div khi nó chỉnh sửa)

     <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> 
Các vấn đề liên quan