早上好,
我目前正在寻找一种解决方案来两次获取DOM元素ID。
这是动态内容,因此我有以下基本代码:
$(document).on({
mouseenter: function(e) {
},
mouseleave: function(e) {
}
}, '.template-builder-template-stream-slot');
但是,我在上述两种情况下获取元素的实际id时遇到了问题。
感谢您的帮助!
答案 0 :(得分:2)
您可以简单地使用this.id
,假设您的.template-builder-template-stream-slot
元素在触发此代码时实际上具有ID。如果它没有ID,结果将为空白。
$(document).on({
mouseenter: function(e) {
console.log("mouseenter on #" + this.id);
},
mouseleave: function(e) {
console.log("mouseleave on #" + this.id);
}
}, '.example');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<figure class="example" id="one">This has an ID of "one".</figure>
<figure class="example" id="two">This has an ID of "two".</figure>
<figure class="example">This has no ID at all.</figure>
如果我们将光标从上到下移动到这两个上,我们将在JavaScript控制台中获得以下结果(请注意最后一个没有ID的元素如何返回没有值(空字符串)):
答案 1 :(得分:1)
您可以使用this
或e.target.id
。有关更多信息,请访问Getting the ID of the element that fired an event
答案 2 :(得分:0)
this
和e.target
都指向目标元素:
var id = e.target.id;
var id = this.id;
如果此值为空String,则目标元素没有id
属性。
您可以通过记录目标元素来验证是否是这种情况:
$(document).on({
mouseenter: function(e) {
console.log(this); // logs a DOM element
console.log(this.id); // logs the id if present, or blank otherwise.
}
}, '.template-builder-template-stream-slot');
答案 3 :(得分:0)
您可以使用&#34; e.target.id&#34;用于访问mouseenter和mouseleave方法中元素的id。