Javascript 了解'的功能;这';在某种背景下
我已经尽了最大努力去理解这一点,但无法理解为什么“this”在第一个代码中不起作用,但在第二个代码示例中起作用 首先(这里不起作用) 在这里,selectChildren()函数有一个参数,当调用函数时,这个被传递给函数,它就工作了 秒Javascript 了解'的功能;这';在某种背景下,javascript,jquery,Javascript,Jquery,我已经尽了最大努力去理解这一点,但无法理解为什么“this”在第一个代码中不起作用,但在第二个代码示例中起作用 首先(这里不起作用) 在这里,selectChildren()函数有一个参数,当调用函数时,这个被传递给函数,它就工作了 秒 $('#' + ID).parent().siblings().each(function() { selectChildren(this); }); function selectChildren(esd) { $(esd).children
$('#' + ID).parent().siblings().each(function() {
selectChildren(this);
});
function selectChildren(esd) {
$(esd).children('.left-links-dashboard').css({
'color': 'grey',
'font-weight': '400'
});
$(esd).children('.left-links-dashboard').children('i').removeClass('fa-arrow-circle-right').addClass('fa-angle-right');
}
已通读stackoverflow、MDN和其他资源,但无法理解第二个代码示例的工作原理。任何解释都会对我很有帮助。谢谢
此
引用当前函数参考
但是在您的第一个代码中,此
位于包装器的内部selectChildren()
,因为该函数是在另一个函数中调用的,
如果你想让第一个代码工作,你可以这样做
$('#' + ID).parent().siblings().each(selectChildren);
// I removed the anonymouse function to set the reference of the jquery element directly to selectChildren function
function selectChildren() {
$(this).children('.left-links-dashboard').css({
'color': 'grey'
});
//this one doesn't work..why ????
}
此
引用当前函数引用
但是在您的第一个代码中,此
位于包装器的内部selectChildren()
,因为该函数是在另一个函数中调用的,
如果你想让第一个代码工作,你可以这样做
$('#' + ID).parent().siblings().each(selectChildren);
// I removed the anonymouse function to set the reference of the jquery element directly to selectChildren function
function selectChildren() {
$(this).children('.left-links-dashboard').css({
'color': 'grey'
});
//this one doesn't work..why ????
}
javascript中的
this
是函数所有者的上下文。看
您的第一个示例暗示被调用的函数由窗口
对象拥有。如果希望以“jquery方式”使用函数:
$(this.selectChildren()
然后研究如何编写jquery插件:javascript中的
这个是函数所有者的上下文。看
您的第一个示例暗示被调用的函数由窗口
对象拥有。如果希望以“jquery方式”使用函数:
$(this.selectChildren()
然后研究编写jquery插件:,因为在第二个插件中,您将这个作为参数传递。否则,此
指的是从下面的答案中选择Childrenaside的函数,您也可以使用以下命令使第一个示例正常工作:selectChildren.call(this)代码>基思。这是我无法理解的。当一个参数被传递给selectChildren()函数时,它就工作了。但是如果没有这个参数调用它就不起作用。我正在努力理解它是如何工作的。是的,我最近读了《打电话申请》。你说得对,我可以打电话。在第一种情况下,如果我不理解为什么它不起作用,我就不能继续前进。因为在第二种情况下,你把这个作为一个参数传递。否则,此
指的是从下面的答案中选择Childrenaside的函数,您也可以使用以下命令使第一个示例正常工作:selectChildren.call(this)代码>基思。这是我无法理解的。当一个参数被传递给selectChildren()函数时,它就工作了。但是如果没有这个参数调用它就不起作用。我正在努力理解它是如何工作的。是的,我最近读了《打电话申请》。你说得对,我可以打电话。显然,如果不理解为什么在第一种情况下它不起作用,我就无法继续前进。如果你想以“jquery方式”使用你的函数:$(this)。选择children()
,函数需要作为插件完全重新编写。在jQuery中,有更简单、更快的方法可以在给定的范围内执行代码,而不必求助于它。如果您想以“jQuery方式”使用您的函数:$(this)。为此,选择children()
,函数需要作为插件完全重新编写。在jQuery中,有更简单、更快的方法可以在给定范围下执行代码,而无需求助于该范围。