繁体   English   中英

如何在jQuery中获取元素的id?

[英]How to get id of an element in jQuery?

我是jQuery的新手,我正在尝试获取已在页面中单击的元素的id

至于我看过了,我知道,我们可以得到一个id ,通过使用当前元素的$(this).attr("id");

但我没有得到id而是说它undefined

HTML代码:

<html>
    <body>
        <form action="#">
            <a href='#' id="1st">First</a></br>
            <a href='#' id="2nd">Second</a></br>
            <p id='3rd'>Test text</p>
        </form>
        <script type="text/javascript" src="jquery.js"> </script>
        <script type="text/javascript" src="code.js"> </script>
    </body>
</html>

code.js(jQuery代码):

$(document).click(function(){
    alert($(this).attr("id"));
    });

以下代码如何完美地返回id:

$(document).click(function(event){
    alert(event.target.id);
    });

有人可以解释为什么会发生这种情况以及我误解了什么? 谢谢。

正如Jason P在评论中指出的那样,你将.click()事件绑定到$(document)所以对$(this)所有引用都将引用$(document) 由于您要求$(document)id ,您将收到未定义的错误,因为没有id

如果你想获得<a>id ,那么你需要将.click()事件绑定到那个,比如:

$("a").click(function(){
     alert( $(this).attr("id") );
});

$(this)现在指的是<a>

请注意,这会将.click()事件附加到每个 <a>

这是因为$(this)指的是文档(事件绑定的内容)。 回调中的event.target参数指的是被单击的元素。

如果要将它与.attr()结合使用,可以将event.target包装到jquery对象并调用attr('id')

 $(document).click(function(event){
    alert($(event.target).attr("id"));
 });

见jsfiddle: http//jsfiddle.net/85HK4/1/

PS:你在这里看到的与事件冒泡有关。 请参阅: http//www.quirksmode.org/js/events_order.html以及什么是事件冒泡和捕获?

简而言之: event.target引用您单击的元素,这是指您将event绑定到的元素。

<script>
$(document).ready(function() {

   $(".well").mouseenter(function(e) {
        alert($(this).attr("id"));
    });

  });

</script>

<div class="container">
<h2 class="text-info"> Check</h2>
        <div class="well" id="first">
            <a href='#' id="1st" class="text-warning">First</a></br>
            <a href='#' id="2nd">Second</a></br>
        </div>
</div>

这里$ this指的是任何事件,例如,mouseenter,click,mouseup等绑定到某个dom元素,您可以使用任何类,id或任何属性进行选择。

和$ this绑定事件和dom来撤销被叫请求。 这里是带有类的id dom元素:'well'

现在,如果你包括,第二个div与同一个类。 喜欢

<div class="well" id="second">
            <a href='#' id="1st" class="text-warning">First</a></br>
            <a href='#' id="2nd">Second</a></br>
</div>

每个班级都会用它的dom检查发生的事件。 因此,事件和选择器都应匹配以提供所需的结果,并且$ this绑定两者并相应地读取以给出结果。

在第二种情况下,当您将鼠标悬停在第二个div上时,它将发出警告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM