javascript - jquery 没有功能?

标签 javascript jquery

<分区>

火狐 (v52.0), jquery

这个有效:

// example 1
$('html').find('body')

这个有效:

// example 2
var h
h=$('html')
h.find('body')

这行不通:

// example 3
var f
f=$('html').find
f('body')

我明白了

Error: Permission denied to access property "ownerDocument"

为什么?

但这行得通:

// example 4
var a
a = x => $('html').find(x)
a('body')

最佳答案

示例 3 不起作用,因为当您将 find 分配给 f 时,会在全局上下文中调用它。如果您使用 call 并将有效的 jQuery 对象作为上下文传递,则代码可以正常工作。试试这个

var f = $('html').find;
console.log(f.call($('html'), 'body').length)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

另外,示例 4 可以工作,因为如果不使用箭头函数编写,a 可以转换为以下代码。

var a = function(x) {
  return $('html').find(x);
};

这只是示例 1,但是带有一个包装函数以获取参数

关于javascript - jquery 没有功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45365240/

相关文章:

javascript - HTML/JavaScript 拖放 - 是否可以使重影图像 *不* 看起来 'washed out' ?

jquery - 在多个 div 中定位一个 div

javascript - 使用脚本将 HTML Web 应用表数据发送回 Google 表格

javascript - 迭代指定 DIV 标记内的所有表单字段

javascript - 使用ajax在后台删除mysql数据库条目

jquery - 如何停止 jquery 悬停时的额外间距?

javascript - 将正则表达式分解为单词和其他所有内容

javascript - 与 JSON.stringify() 相比,使用 toString() 有什么区别?

javascript - 将照片从 javascript 发送到 php

javascript - 只有文本的 Bootstrap.js 轮播