Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery无法获取带有';这';_Jquery_This - Fatal编程技术网

jquery无法获取带有';这';

jquery无法获取带有';这';,jquery,this,Jquery,This,我对函数中的“this”有些困惑 为什么我不将“spanID”作为我单击的元素的id HTML 这里是我没有在span标记中包含函数调用 我只是: <span id="spanID">something</span> $(document).ready(function(){ $("#spanID").click(function(){ alert($(this).attr("id")); }); }); 什么 $(文档).ready(

我对函数中的“this”有些困惑

为什么我不将“spanID”作为我单击的元素的id

HTML


这里是

我没有在span标记中包含函数调用

我只是:

<span id="spanID">something</span>

$(document).ready(function(){
    $("#spanID").click(function(){
        alert($(this).attr("id"));
    });
});
什么 $(文档).ready(函数(){ $(“#spanID”)。单击(函数(){ 警报($(this.attr(“id”)); }); });
添加到alertIt()函数

什么 HTML

使用以下命令

$("span").on("click",function(){
    alert($(this).attr("id"));
})

工作小提琴

您正面临一个问题,因为函数中的
$(此)
引用了窗口对象。您应该在
onclick=“alertIt(this)”
中传递
this
,例如:

<span id="spanID" onclick="alertIt(this)">something</span>
function alertIt(a){
    console.log(a.id);
}

此选择器仅获取嵌套在其中的元素。例如:

$("#example").click(function(){
   $(this).fadeOut(500);
});

在您的代码中,没有嵌套
选择器的元素。

因为当您创建内联事件处理程序时,您正在创建一个匿名函数:

onclick="alertIt()"
就像:

function() {
    alertIt();
}
使用jQuery绑定的事件处理程序具有相同的行为:

$('#spanID').click(function() {
    alertIt();
});
匿名函数具有正确的上下文,但除非您显式地这样做,否则上下文不会传递给其他函数:

onclick="alertIt(this)"



我也会这么做,因为函数中的$(this)引用了window对象,它没有ID。
<span id="spanID">something</span>
$("span").click(function(){
    alert($(this).attr("id"));
});
$("#example").click(function(){
   $(this).fadeOut(500);
});
onclick="alertIt()"
function() {
    alertIt();
}
$('#spanID').click(function() {
    alertIt();
});
onclick="alertIt(this)"
$('#spanID').click(function() {
    alertIt(this);
});
function alertIt(obj) {
    alert(obj);
}
onclick="alertIt.call(this)"
$('#spanID').click(function() {
    alertIt.call(this);
});
function alertIt() {
    alert(this);
}