event.target.id 或 $(this).attr("id") 在 Firefox 中不工作
event.target.id or $(this).attr("id") not working in Firefox
我正在尝试提取 div 元素的 ID,但是 none 在其他线程中描述的方法已经奏效。这包括:
$(".icon").on('click', function(event){
var id = $(this).attr("id");
console.log(id);
});
$(".icon").on('click', function(event){
var id = event.target.id;
console.log(id);
});
$(".icon").click(function(event){
var id = event.target.id
console.log(id);
});
$(".icon").click(function(event){
var id = this.id;
console.log(id);
});
我成功提取 div ID 的唯一方法是在 HTML 中使用 onclick 函数连接到 html-bound JS功能。 (尽管这是因为该函数是在 HTML 元素之前定义的,这对于我需要在文档末尾调用的外部文件是不可能的。)
<script>
function getId(element) {
console.log(element.id);
}
</script>
<div class="icon" id="test" onclick="getId(this)">text goes here</div>
我得到的确切问题是变量 'id' 的 console.log() 为空或读取 'undefined',尽管显然有一个 ID 并且它在它时工作是 HTML-绑定的。
我需要能够在从 HTML 代码末尾调用的外部 JS 文件中单击时读取 div 的 ID。
如果有帮助,div 元素有一个父元素 div。
jQuery:
$(".icon").on('click', function(event){
var id = $(event.target).attr('id');
console.log(id);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="icon" id="test">text goes here</div>
与jQuery绑定点击事件时,传递的参数是click
事件。如果 console.log
-ed 它将显示 .target
属性 中的 DOM 元素。 event.target
是一个 DOM 元素。因此,您可以使用 event.target.id
获取 id,或者,为了坚持使用 jQuery
方法,应该在 DOM 元素周围的 jQuery 包装器上使用 .attr('id')
: $(event.target).attr(id)
.
正如 charliefl 在评论中指出的那样,当单击元素的 child 时,这很容易出错,因为 target
将是 child 而click 绑定在 parent 上(而 child 可能根本没有 id
)。为确保您获得 parent 的 id
,请在 event.target
上使用 .closest('.icon')
(它会找到最近的祖先,包括当前元素,class icon
)。
因此,一种改进的 jQuery 方法是:
$(".icon").on('click', function(event){
var id = $(event.target).closest('.icon').attr('id');
console.log(id);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="icon" id="test">text goes here</div>
JavaScript:
getId = function(el) {
console.log(el.id);
}
<div class="icon" id="test" onclick="getId(this)">text goes here</div>
使用onclick
属性绑定时,函数的第一个参数不是event
,而是DOM element
。如果元素具有 id
属性,它将通过调用 .id
来 returned。否则,调用 .id
将 return undfined
。 (在 JavaScript 中,DOM 元素是 objects 并且它们的每个属性都是属性,class
是一个明显的例外,可以通过 .classList
属性,它又具有方便的方法,例如:.add()
、.remove()
、.contains()
和 .toggle()
).
重要的区别以及您应该从中得到的是 DOM 元素与其周围的 jQuery 包装器不同。您始终可以通过将任何 DOM 元素包装在 jQuery 包装器中来使用 jQuery 方法:$('selector')
反之亦然,您可以从 jQuery 使用 $('selector')[0]
包装器。如果 jQuery 包装器是一个集合,您可以使用 .each()
对其进行迭代,或者您可以使用 .eq(index)
直接转到其中一个。因此,document.querySelector('.icon')
等同于 $('.icon').eq(0)[0]
.
您需要包含 jQuery
库并将您的代码添加到 ready()
函数中
$(document).ready(function() {
$(".icon").on('click', function(event) {
console.log($(this).attr("id"));
console.log(event.target.id);
});
$(".icon").click(function(event) {
console.log(event.target.id);
console.log(this.id);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="icon" id="test">text goes here</div>
你的 jquery code
应该可以正常工作我猜你没有包括 jquery library
这就是为什么只有 javascript code
适合你。
添加 jquery 库并将您的代码放入 doument.ready
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
和jquery代码
$(function () {
$(".icon").on('click', function (event) {
var id = $(this).attr("id");
console.log(id);
});
});
我正在尝试提取 div 元素的 ID,但是 none 在其他线程中描述的方法已经奏效。这包括:
$(".icon").on('click', function(event){
var id = $(this).attr("id");
console.log(id);
});
$(".icon").on('click', function(event){
var id = event.target.id;
console.log(id);
});
$(".icon").click(function(event){
var id = event.target.id
console.log(id);
});
$(".icon").click(function(event){
var id = this.id;
console.log(id);
});
我成功提取 div ID 的唯一方法是在 HTML 中使用 onclick 函数连接到 html-bound JS功能。 (尽管这是因为该函数是在 HTML 元素之前定义的,这对于我需要在文档末尾调用的外部文件是不可能的。)
<script>
function getId(element) {
console.log(element.id);
}
</script>
<div class="icon" id="test" onclick="getId(this)">text goes here</div>
我得到的确切问题是变量 'id' 的 console.log() 为空或读取 'undefined',尽管显然有一个 ID 并且它在它时工作是 HTML-绑定的。
我需要能够在从 HTML 代码末尾调用的外部 JS 文件中单击时读取 div 的 ID。
如果有帮助,div 元素有一个父元素 div。
jQuery:
$(".icon").on('click', function(event){
var id = $(event.target).attr('id');
console.log(id);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="icon" id="test">text goes here</div>
与jQuery绑定点击事件时,传递的参数是click
事件。如果 console.log
-ed 它将显示 .target
属性 中的 DOM 元素。 event.target
是一个 DOM 元素。因此,您可以使用 event.target.id
获取 id,或者,为了坚持使用 jQuery
方法,应该在 DOM 元素周围的 jQuery 包装器上使用 .attr('id')
: $(event.target).attr(id)
.
正如 charliefl 在评论中指出的那样,当单击元素的 child 时,这很容易出错,因为 target
将是 child 而click 绑定在 parent 上(而 child 可能根本没有 id
)。为确保您获得 parent 的 id
,请在 event.target
上使用 .closest('.icon')
(它会找到最近的祖先,包括当前元素,class icon
)。
因此,一种改进的 jQuery 方法是:
$(".icon").on('click', function(event){
var id = $(event.target).closest('.icon').attr('id');
console.log(id);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="icon" id="test">text goes here</div>
JavaScript:
getId = function(el) {
console.log(el.id);
}
<div class="icon" id="test" onclick="getId(this)">text goes here</div>
使用onclick
属性绑定时,函数的第一个参数不是event
,而是DOM element
。如果元素具有 id
属性,它将通过调用 .id
来 returned。否则,调用 .id
将 return undfined
。 (在 JavaScript 中,DOM 元素是 objects 并且它们的每个属性都是属性,class
是一个明显的例外,可以通过 .classList
属性,它又具有方便的方法,例如:.add()
、.remove()
、.contains()
和 .toggle()
).
重要的区别以及您应该从中得到的是 DOM 元素与其周围的 jQuery 包装器不同。您始终可以通过将任何 DOM 元素包装在 jQuery 包装器中来使用 jQuery 方法:$('selector')
反之亦然,您可以从 jQuery 使用 $('selector')[0]
包装器。如果 jQuery 包装器是一个集合,您可以使用 .each()
对其进行迭代,或者您可以使用 .eq(index)
直接转到其中一个。因此,document.querySelector('.icon')
等同于 $('.icon').eq(0)[0]
.
您需要包含 jQuery
库并将您的代码添加到 ready()
函数中
$(document).ready(function() {
$(".icon").on('click', function(event) {
console.log($(this).attr("id"));
console.log(event.target.id);
});
$(".icon").click(function(event) {
console.log(event.target.id);
console.log(this.id);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="icon" id="test">text goes here</div>
你的 jquery code
应该可以正常工作我猜你没有包括 jquery library
这就是为什么只有 javascript code
适合你。
添加 jquery 库并将您的代码放入 doument.ready
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
和jquery代码
$(function () {
$(".icon").on('click', function (event) {
var id = $(this).attr("id");
console.log(id);
});
});