很抱歉标题含糊,我想不出一个简洁的方法来概括这个问题。我是Javascript和JQuery的新手,需要根据复选框的值来响应被切换的复选框。搜索这个网站会发现很多答案,大部分都是这样的:
$("input[type='checkbox']").click(function() {
if( $(this).is(':checked') ) {
//code here
}
})然而,在我灵光一现的动态输入灵感中,我尝试在我的Javascript控制台中输入以下内容:
$("input[type='checkbox']").click(function() {
if( this.checked ) {
//code here
}
})令我惊讶的是,...and成功了!幕后发生了什么?有没有定义一个叫做'checked‘的方法,或者某种默认属性,或者甚至是一个Ruby风格的’方法缺失‘的概念?这是由JQuery实现的,还是Javascript固有的?
它给我留下了深刻的印象,我想更好地理解它。
发布于 2011-02-15 18:22:23
这基本上归结为this和$(this)之间的区别。(Read more here)
this是当前对象的DOM对象,而as $(this)是jQuery包装版本。这意味着你可以做this.checked,和调用普通的Javascript一样。
这意味着,就像@Val所说的那样,你可能会遇到跨浏览器的问题,因为你不依赖jQuery来为你解决这些问题。
发布于 2012-01-28 01:45:58
它工作的原因是当处理程序被调用时,它会做一些如下的事情:
callbackfn.call(<reference to event obj>, .. params .. )如果您查看一下JS引用,您将看到传递给.call的第一个参数是您希望在其中运行函数的上下文。因此,在本例中,由于传入的对象是被单击的项,因此它将是上下文。
我不同意其他的回答,说这会给你的浏览器兼容性带来任何麻烦,这是你应该做的,许多jQuery库都依赖于这一点。
https://stackoverflow.com/questions/5002245
复制相似问题