boolean-logic - 不清楚这个 jQuery 语法 : return ! $()

标签 boolean-logic logical-operators jquery

我看到了这段代码,但我不清楚“!”在这行 jQuery 代码中对 jQuery 对象返回的作用:

$('#remove').click(function() {
    return !$('#select2 option:selected').appendTo('#select1');
});

编辑

什么是这样做的好例子?

最佳答案

它将 $('#select2 option:selected').appendTo('#select1') 的结果转换为 bool 值,并将其取反。

但是,由于 appendTo 的结果始终是 jQuery 对象,并且对象(无论是否为 jQuery)始终为 true,因此 !$('#select2 option:selected ').appendTo('#select1') 始终 false。

所以我们所拥有的是有效的:

$('#remove').click(function() {
    $('#select2 option:selected').appendTo('#select1');

    return false;
});

在 jQuery 事件处理程序中返回 false 将停止发生默认事件操作(例如提交表单/超链接导航)停止传播任何事件在 DOM 树的更上层。

所以我们所拥有的是有效的:

$('#remove').click(function(e) {
    $('#select2 option:selected').appendTo('#select1');

    e.preventDefault();
    e.stopPropagation();
});

使用return false而不是e.preventDefault(); e.stopPropagation(); 可以,但是使用 return !$(..) 作为第一个示例的快捷方式是荒谬的,并且没有 需要这样做。

重申一下我的观点,这里需要注意的最重要的事情是,从来没有充分的理由/案例来这样做。

链接:

  1. Docs for bind() (click() 的别名)
  2. Docs for preventDefault()
  3. Docs for stopPropagation()

关于boolean-logic - 不清楚这个 jQuery 语法 : return ! $(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7506618/

相关文章:

logic - 这里有逻辑漏洞吗?

c - bool 变量正在变化,不知道为什么——C语言

java - boolean 逻辑应该尽早完成吗?

python - Python的短路有什么值(value)?

jquery - 如何使用 jquery 显示图像的一部分?

C++ 实现(XOR、IMPLIES、IFF)

奇数的Python逻辑测试

c - 非常困惑的 while 循环条件

jquery - 如何按一定比例缩放DIV的所有内容?

jquery - Rails 3,使用 Prototype 和 JQuery,远程 => true 不起作用