我现在已经阅读了很多,但从低音的角度来看,我仍然没有得到一个有意义的解释。
$(document).ready(function() {
$("#slideshow").css("overflow", "hidden"); /*kuna JS t66tab siis ei ole vaja scrollbari n2ha*/
$("#slideshow-nav").css("visibility", "visible"); /*nupud tehakse n2htavaks*/
$("#slideshow-nav a[href=#pilt1]").addClass("active"); /*muudetakse esimene nupp aktiivseks*/
$("#slideshow-nav").localScroll({ /*see funktsionaalsus pärineb ka http://flesler.blogspot.com/*/
target:'#slideshow', axis: 'x' /*vajalik scrollTo ja localscroll kasutamiseks, paneb paika,et need pluginad liigutaksid slaidi pilte mööda x-telge*/
});
$("#slideshow-nav a").click(function(){
$("#slideshow-nav a").removeClass("active");
$(this).addClass("active"); /*kui vajutada uuele nupule v6etakse aktiivne klass sealt 2ra ja lisatakse vajutatud nupule*/
});
});
$(this)
在上下文中有什么用途:$(this).addClass("active");
,我理解代码本身的作用,但$(this)
的目的是什么,$(this)
在那里使用,是否有一种简单的方法可以达到同样的效果?
谢谢!
答案 0 :(得分:0)
$("#slideshow-nav a").click(function(){
$("#slideshow-nav a").removeClass("active");
$(this).addClass("active");
});
当您调用传递给$("#slideshow-nav a").click()
的处理函数时,this
is bound to the element会触发该事件。然后,将this
传递给$()
以围绕该元素构造一个jQuery对象,这样就可以在其上使用jQuery' addClass()
。您可以通过用this.classList.add("active")
替换该行来完成相同的操作,以使用非jQuery方式执行相同的操作。
简而言之,当$(this)
绑定到某个元素并且您想在该元素上使用jQuery方法时,使用this
。
所以,这段代码最终的作用是:
#slideshow-nav a
匹配的所有元素。以这种方式,以前任何活跃的"元素被"取消激活",被点击的元素被激活"。
答案 1 :(得分:0)
$(this)
指的是被点击的jQuery元素。使用$(this)
是确保您引用用户与之交互的元素的可靠方法。很遗憾,没有好方法可以确保您在不使用$(this)
答案 2 :(得分:0)
首先让我们从this
的含义开始。在JavaScript中,可以绑定任何函数,以便this
在调用函数时引用函数内部的任意事物(对象,数字,字符串等)(请参阅Function.bind)。通常,不保证this
将在任意函数内部引用;你必须阅读文档/源代码或自己测试。
当您调用click()
时,jQuery会将回调函数中的this
绑定到匹配集中的目标元素。当你说$(this)
(或jQuery(this)
)时,你只是用jQuery“wrapper”包装元素。
至于替代方案,jQuery会将事件对象传递给您的回调,您可以通过以下方式访问目标:
$("#slideshow-nav a").click(function(evt){
console.log($(evt.target)); //I think just using "$(this)" is easier!
});
答案 3 :(得分:0)
根据minitech的评论,$(this)指的是其中一个' a' slideshow-nav DOM元素中的元素,特别是单击的元素。
$("#slideshow-nav a").click(function(){
// $("#slideshow-nav a") refers to an array of links in slideshow-nav
$("#slideshow-nav a").removeClass("active");
// $(this) refers just to the specific link that was clicked
$(this).addClass("active");
});
这是AFAIK的最佳实践。是否有某些原因您不想使用$(this)
?