不清楚这个 jQuery 语法:return !$()
我看到了这段代码,但不清楚 '!
' 在这行 jQuery 代码中对 jQuery 对象返回的作用:
$('#remove').click(function() {
return !$('#select2 option:selected').appendTo('#select1');
});
EDIT
什么是一个好的案例要这样做吗?
I saw this code and I'm not clear what the '!
' does in this line of jQuery code on the return on the jQuery object:
$('#remove').click(function() {
return !$('#select2 option:selected').appendTo('#select1');
});
EDIT
What is a good case to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它将
$('#select2 option:selected').appendTo('#select1')
的结果转换为布尔值,并将其取反。但是,由于
appendTo
的结果始终是 jQuery 对象,并且对象(无论是否为 jQuery)始终为 true,因此!$('#select2 option:selected') 的结果。 appendTo('#select1')
始终 false。所以我们所拥有的是有效的:
在 jQuery 事件处理程序中返回
false
将停止发生默认事件操作(例如提交表单/超链接导航)并停止事件在 DOM 树上进一步传播。所以我们所拥有的是有效的:
使用
return false
而不是e.preventDefault(); e.stopPropagation();
可以,但是使用return !$(..)
作为第一个示例的快捷方式是荒谬的,并且没有 需要这样做。只是重申一下我的观点,这里要注意的最重要的事情是,从来没有充分的理由/案例来这样做。
链接:
bind()
文档(click( 的别名) )
)preventDefault()
stopPropagation()
的文档It converts the result of
$('#select2 option:selected').appendTo('#select1')
to a boolean, and negates it.However, as the result of
appendTo
is always a jQuery object, and an object (jQuery or not) is always truthy, the result of!$('#select2 option:selected').appendTo('#select1')
is always false.So what we have is effectively:
Returning
false
in a jQuery event handler will stop the default event action occuring (e.g. the submission of a form/ navigation of a hyperlink) and stop the event propagating any further up the DOM tree.So what we have is effectively:
Using
return false
instead ofe.preventDefault(); e.stopPropagation();
is OK, but using thereturn !$(..)
as a shortcut for the first example is ridiculous, and there is no need to do it.Just to reiterate my point, the most important thing to note here is that there is never, ever a good reason/ case to do this.
Links:
bind()
(alias forclick()
)preventDefault()
stopPropagation()