Getting the ID of the element that fired an event
是否有任何方法可以获取触发事件的元素的ID?
我在想:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <html> <head> <script type="text/javascript" src="starterkit/jquery.js"> <script type="text/javascript"> $(document).ready(function () { $("a").click(function () { var test = caller.id; alert(test.val()); }); }); </head> <body> <form class="item" id="aaa"> <input class="title"></input> </form> <form class="item" id="bbb"> <input class="title"></input> </form> </body> </html> |
当然,除了var
在jquery中,
1 2 3 4 5 | $(document).ready(function() { $("a").click(function(event) { alert(event.target.id); }); }); |
还要注意,
1 2 3 4 5 6 | $(document).ready(function() { $("a").click(function(event) { // this.append wouldn't work $(this).append(" Clicked"); }); }); |
作为参考,试试这个!它起作用了!
1 2 3 4 | jQuery("classNameofDiv").click(function() { var contentPanelId = jQuery(this).attr("id"); alert(contentPanelId); }); |
虽然在其他文章中提到过,但我想详细说明一下:
和
当然,区别在于jquery对象和dom对象之间。"id"是一个dom属性,因此必须在dom元素对象上才能使用它。
(它绊倒了我,所以很可能绊倒了别人)
对于所有事件,不仅限于可以使用的jquery
1 2 | var target = event.target || event.srcElement; var id = target.id |
当
您可以使用
当您在回调函数(jquery的上下文中)内时,
以下是您可以了解更多信息的地方:http://remysharp.com/2007/04/12/jquerys-this-demystalized/
我动态地生成一个数据库中的表,接收JSON中的数据并将其放入一个表中。每个表行都有一个唯一的
1 2 3 4 | $("table").delegate("tr","click", function() { var id=$(this).attr('id'); alert("ID:"+id); }); |
在事件属性中激发事件的元素
1 | event.currentTarget |
我们得到了设置了事件处理程序的DOM节点对象。
开始冒泡过程的大多数嵌套节点
1 | event.target |
事件对象始终是事件处理程序的第一个属性,例如:
1 2 3 4 5 6 | document.querySelector("someSelector").addEventListener(function(event){ console.log(event.target); console.log(event.currentTarget); }); |
有关事件委派的详细信息,请访问http://maciejsikora.com/standard-events-vs-event-delegation。/
作为jquery对象的源元素应该通过
1 | var $el = $(event.target); |
这将使您获得单击的源,而不是为单击函数分配的元素。当Click事件位于父对象上时非常有用例如,表行上的单击事件,您需要单击的单元格
1 2 3 | $("tr").click(function(event){ var $td = $(event.target); }); |
您可以尝试使用:
1 2 3 4 | $('*').live('click', function() { console.log(this.id); return false; }); |
在委托事件处理程序的情况下,您可能会有如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <ul> <li data-id="1"> <span>Item 1</span> </li> <li data-id="2"> <span>Item 2</span> </li> <li data-id="3"> <span>Item 3</span> </li> <li data-id="4"> <span>Item 4</span> </li> <li data-id="5"> <span>Item 5</span> </li> </ul> |
您的JS代码是这样的:
1 2 3 4 5 6 7 8 | $(document).ready(function() { $('ul').on('click li', function(event) { var $target = $(event.target), itemId = $target.data('id'); //do something with itemId }); }); |
您很可能会发现itemID是
1 2 3 4 5 6 7 8 | $(document).ready(function() { $('ul').on('click li', function(event) { var $target = $(event.target).is('li') ? $(event.target) : $(event.target).closest('li'), itemId = $target.data('id'); //do something with itemId }); }); |
或者,如果您希望最大限度地提高可读性(同时避免不必要的jquery包装调用重复):
1 2 3 4 5 6 7 8 9 10 11 | $(document).ready(function() { $('ul').on('click li', function(event) { var $target = $(event.target), itemId; $target = $target.is('li') ? $target : $target.closest('li'); itemId = $target.data('id'); //do something with itemId }); }); |
在使用事件委托时,
使用可以在事件中使用.
1 2 3 4 | $("table").on("tr","click", function() { var id=$(this).attr('id'); alert("ID:"+id); }); |
这在比上述答案中提到的事件参数更高的
1 2 3 4 5 | $("#mydiv li").click(function(){ ClickedElement = this.id; alert(ClickedElement); }); |
这样,您将始终获得(在本例中为
1 2 3 4 5 6 7 8 9 | var buttons = document.getElementsByTagName('button'); var buttonsLength = buttons.length; for (var i = 0; i < buttonsLength; i++){ buttons[i].addEventListener('click', clickResponse, false); }; function clickResponse(){ // do something based on button selection here... alert(this.id); } |
在这里工作。
在IE8中,
只需使用
1 | $(this).attr("id") |
或
1 | $(this).prop("id") |
这两项工作,
1 | jQuery(this).attr("id"); |
和
1 | alert(this.id); |
您可以使用函数获取更改项的ID和值(在我的示例中,我使用了一个select标记)。
1 2 3 4 5 6 7 | $('select').change( function() { var val = this.value; var id = jQuery(this).attr("id"); console.log("value changed" + String(val)+String(id)); } ); |
这适用于大多数类型的元素:
1 2 3 | $('selector').on('click',function(e){ log(event.currentTarget.id); }); |
对于角7.x,可以获取本机元素及其ID或属性。
1 2 3 4 5 | myClickHandler($event) { this.selectedElement = <Element>$event.target; console.log(this.selectedElement.id) this.selectedElement.classList.remove('some-class'); } |
HTML:
1 | ... |
我正在和
jQuery Autocomplete
我试着像上面描述的那样寻找一个