问题标签 [jquery-context]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
347 浏览

javascript - jQuery 上下文减慢搜索速度

可能重复:
带有上下文的 jQuery 选择器的性能

jQuery DOCS中它说

默认情况下,选择器从文档根目录开始在 DOM 中执行搜索。但是,可以使用 $() 函数的可选第二个参数为搜索提供替代上下文。

基于此,我的理解是使用context传入作为第二个参数的选择应该比没有context传入的相同选择更快。但是我运行了一些测试,似乎情况并非如此,或者至少不是并非总是如此。

详细地说,我最初想看看一次搜索多个元素 ( $("div1, #div2")) 是否比单独搜索两个元素 ( ) 更快$("#div1") $("div2")。然后我决定用context和 不测试它,看看它用 的速度有多快context,但当事实证明context似乎在减慢速度时,我感到很惊讶。

例如,给出以下基本 HTML 标记

以及以下 JavaScript(jQuery 1.8.2,并使用 FireBug 测试)

这是一个jsbin

我得到类似以下结果

没有缓存的个人:11490ms
有 $cache 的个人:13315ms
有 DOM 缓存的个人:14487ms

不带缓存的多个:7557ms
带 $cache 的多个:7824ms
带 DOM 缓存的多个:8589ms

有人可以对发生的事情有所了解吗?具体来说,当传入 jQuery 上下文时,为什么搜索会变慢?

编辑:

这里的大多数回答者(以及带有上下文的 jQuery 选择器的性能)基本上都说这个例子中的 DOM 太小而无法真正获得太多,或者ID无论如何选择都会很快。我理解这两点,我的问题的重点是为什么会context 减慢搜索速度,大小DOM不应该对此产生影响,而且通过 ID 搜索已经非常快的事实也不应该。

@pebble建议它较慢的原因是因为 jQuery 不能使用本机浏览器方法(getElementByID),这对我来说似乎很有意义,但是为什么在一个选择中搜索多个元素会更快呢?

无论如何,我将测试转储到jsPerf添加案例以按类搜索,并且再次惊讶地发现这次搜索具有缓存的多个类是最快的。

0 投票
1 回答
199 浏览

contextmenu - div为空时如何停止jquery上下文菜单?

我正在尝试 Jquery 上下文菜单。它工作正常。我的代码如下

现在我想要的是在 ($(this).html()=="") 时不打开菜单。

当容器的 html 为空白时,我可以阻止菜单在右键单击时打开吗?

提前致谢。

维丁

0 投票
1 回答
102 浏览

jquery - jquery 绑定上下文不匹配

我有一个 HTML 菜单选项,我click在 jQuery 中绑定了一个处理程序:

我对以下行有疑问:

我想这是一个上下文问题。我的意思是,在 bind 函数内部,this不再xyz是 ('#menu_outcome_list') HTML 元素。我想做的只是xyz从绑定函数内部调用 ' 方法。

0 投票
1 回答
640 浏览

this - 使用插件上下文调用 jQuery 的 ready()

我的插件允许您在其选项中指定回调。该插件可能在 DOM 准备好之前运行,但我需要确保回调仅在 DOM 准备好后运行,因此我将其包装callback.call()$( document ).ready()处理程序中。

问题是我想在回调中维护插件的上下文。换句话说,在回调中,我想this成为插件,而不是document.

这是我想出的,但我不确定这是否真的是最好的方法。

最后一行很难看,但它允许我将插件的this上下文传递给回调。

我宁愿这样做$( document ).ready( this.options.callback )并完成它,但是在回调中,thisdocument并没有真正帮助,并且不一定让我轻松访问调用插件的元素......

有没有更好的办法?

0 投票
3 回答
1927 浏览

jquery - 设置 datePicker 认为这是未来的一天

默认情况下,如果我们说

在选项中,选择的最短日期将从Today开始四天。

将来是否可以更改date()要设置的内容?

所以,假设我们有第二个日期选择器,但我们希望第二个日期假设今天是在前一个日期选择器元素中设置的日期。我们会说这是05/03/2020

有什么方法可以将下一个日期选择器输入设置为就好像那天一样,这样我就可以使用{minDate: 4}它,它会调整与先前选择的日期相关的设置?

也许是这样的:

可能解释得更好一点:

默认情况下,日期选择器知道今天是什么,并应用与今天相关的自定义选项,即 {minDate:5}。我想更改第二个日期选择器的今天,以便它认为在前一个字段中设置的日期是今天。因此,如果我们将其设置为 05/03/2020,下一个日期选择器的最小日期将为 05/08/2020,我希望这是有道理的!

0 投票
1 回答
1411 浏览

javascript - 我想使用 jquery 获取 div 的所有内容

我想使用 jquery 获取 div 的所有内容。

但是当我使用 jquery 函数时

仅返回 div 标签,仅表示 html,不返回<head></head> <body></body></html>

所以我使用 `var editor_data = $("#load_template_data").contents();

但是这个回报 [object Object] 我想从这个 div 中获取所有数据。也许我错过了任何东西。

0 投票
3 回答
166 浏览

javascript - 使用 _self 所以我总是可以拥有对象上下文

_self始终可以访问对象的正确方法是什么?使用_self没问题,还是不好的做法?

我想要一个很好的方法来获取 myObject 的属性和方法,即使是在 myObject 的上下文中没有调用的函数。有一些解决方案,如.bind(this)、 using_self和 jQuery 的$.proxy().

例如:

0 投票
1 回答
43 浏览

jquery - 请在此 jQuery 代码中解释偏移函数的上下文

我正在尝试使用 jQuery 航点设置一些很酷的效果。但我不太擅长 javascript/jQuery。我更熟悉PHP。

航点代码提供基于页面滚动的触发事件。在下面的代码中,我使用了他们的“sticky”选项,它只是应该在窗口滚动超过某个点时将匹配元素的类设置为“stuck”。

因此,显然,在“粘性”之后,我可以传入一些用大括号括起来的选项。.example-basic我希望根据元素相对于具有相同类 ( )的其他元素的位置来触发航点。第一个元素将在 0 处触发(当窗口到达元素顶部时),第二个元素将在窗口远离元素顶部 N 时触发,其中 N 是前一个元素的高度。

我发现的最大问题是变量current被设置为-1。我无法在列表中得到它的顺序。我猜那offset: function不知道是什么this。我如何让它工作?

编辑:完整脚本(包括 CSS、HTML 和 javascript/jQuery)(我用 php echo 循环替换了一些重复的 HTML)

0 投票
1 回答
9112 浏览

javascript - 使用chartjs的getContext错误

我正在关注本教程[chart.js][1],我收到此错误和此行

在哪里$("#myChart")代表<figure id="myChart" class="chart"></figure>

抛出此错误

0 投票
0 回答
169 浏览

javascript - 为什么我的 jquery 对象会改变上下文?

我正在比较 mousedown 事件的两个元素,但由于上下文属性,它们是错误的:

这就是我在 mousedown 上所做的:

为什么上下文发生了变化?