[英]jQuery attr('id') is returning 'undefined'
的HTML:
<button class="btn" id="1"></button>
<p></p>
jQuery的:
$('.btn').click(function() {
var id=$(this).attr('id');
$('p').html(id);
});
返回值:
未定義
該問題已得到糾正
$(this)
在這種情況下,我建議您使用$(this)
$('button').click(function(){ console.log($(this).attr("id")); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button class="btn" id="150">Click Me</button>
event.target
就像他的答案中提到的@aspiring_dev一樣,您可以在click
函數中使用jQuery處理程序函數的event參數 :
$('.btn').click(function(event){ console.log($(event.target).attr('id')); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button class="btn" id="1">Button</button> <p></p>
$(this)
和event.target
之間的區別 在以下示例中,我為div編寫了一個click事件。 現在單擊Button 1
, Button 2
和黃色div
以查看結果之間的差異。 event.target
等於孩子點擊的元素 ,但是this
始終是等於div
。
$('div').click(function(event){ var thisId = $(this).attr('id'); var eventTargetId = $(event.target).attr('id'); console.log('thisId » ' + thisId); if(eventTargetId.indexOf('mainDiv')<0) console.log('eventTargetId » ' + eventTargetId); else console.log('eventTargetId' +' = '+ 'thisId » ' + thisId ); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="mainDiv" style="padding:20px;background:#fdd800;border:1px solid orange;"> <button class="btn1" id="btn1">Button 1</button> <button class="btn2" id="btn2">Button 2</button> </div>
window.event.target
IE9+
已提供event.target
。 如果需要支持IE6-8
,則需要使用event.srcElement
。
$('button').click(function(){ console.log($(window.event.target).attr("id")); console.log($(window.event.srcElement).attr("id")); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button class="btn" id="150">Click Me</button>
回調中未定義event
,請嘗試這樣的操作
$('.btn').click(function(event) { // you're not passing `event` so it's undefined var id=$(event.target).attr('id'); $('p').html(id); });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.