首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >意想不到的JQuery惊人...但是它是如何工作的(方法缺少类型语法)?

意想不到的JQuery惊人...但是它是如何工作的(方法缺少类型语法)?
EN

Stack Overflow用户
提问于 2011-02-15 18:08:50
回答 2查看 236关注 0票数 0

很抱歉标题含糊,我想不出一个简洁的方法来概括这个问题。我是Javascript和JQuery的新手,需要根据复选框的值来响应被切换的复选框。搜索这个网站会发现很多答案,大部分都是这样的:

代码语言:javascript
复制
$("input[type='checkbox']").click(function() {
    if( $(this).is(':checked') ) {
        //code here
    }
})

然而,在我灵光一现的动态输入灵感中,我尝试在我的Javascript控制台中输入以下内容:

代码语言:javascript
复制
 $("input[type='checkbox']").click(function() {
    if( this.checked ) {
        //code here
    }
})

令我惊讶的是,...and成功了!幕后发生了什么?有没有定义一个叫做'checked‘的方法,或者某种默认属性,或者甚至是一个Ruby风格的’方法缺失‘的概念?这是由JQuery实现的,还是Javascript固有的?

它给我留下了深刻的印象,我想更好地理解它。

EN

回答 2

Stack Overflow用户

发布于 2011-02-15 18:22:23

这基本上归结为this$(this)之间的区别。(Read more here)

this是当前对象的DOM对象,而as $(this)是jQuery包装版本。这意味着你可以做this.checked,和调用普通的Javascript一样。

这意味着,就像@Val所说的那样,你可能会遇到跨浏览器的问题,因为你不依赖jQuery来为你解决这些问题。

票数 2
EN

Stack Overflow用户

发布于 2012-01-28 01:45:58

它工作的原因是当处理程序被调用时,它会做一些如下的事情:

代码语言:javascript
复制
callbackfn.call(<reference to event obj>, .. params .. )

如果您查看一下JS引用,您将看到传递给.call的第一个参数是您希望在其中运行函数的上下文。因此,在本例中,由于传入的对象是被单击的项,因此它将是上下文。

我不同意其他的回答,说这会给你的浏览器兼容性带来任何麻烦,这是你应该做的,许多jQuery库都依赖于这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5002245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档