更改jquery的选择范围
Change jquery selection scope
当我在特定页面javascript中编写jQuery选择器时,我希望能够使用简化的(作用域)选择机制。
要引用当前元素,我需要使用完整选择器:
$('#home-view #events-cloud')'
由于上面的代码行是在home-view后台js文件中使用的,我希望能够做这样的事情:
$.SetSelectorPrefix('#home-view');
$('#events-cloud');
是否有可能做一些事情来解决代码位置特定的选择?
只需修改默认的jQuery init函数,使上下文是您选择的那个:
jQuery.noConflict();
$ = function (selector, context) {
return new jQuery.fn.init(selector, context || document.getElementById('home-view'));
};
$.fn = $.prototype = jQuery.fn;
jQuery.extend($, jQuery);
console.log($('#events-cloud'));
解释:
jQuery.noConflict();
这一行阻止了jQuery对$
的默认赋值。
$ = function (selector, context) {
return new jQuery.fn.init(selector, context || document.getElementById('wrapper'));
};
分配给$
的新修改的函数,将返回一个新的jQuery实例与上下文修改为您的目的(这是脚本的线索)!
$.fn = $.prototype = jQuery.fn;
为$
函数创建一个新的属性fn
,并将其分配给继承jQuery.fn
属性的原型。
jQuery.extend($, jQuery);
使用jQuery函数扩展已创建的对象,因此您可以完全像jQuery一样使用它。
你可以这样写:
var container = $('#home-view');
// Will only search elements within #home-view
container.find('#events-cloud');
// Changing container
container = $('#main-view');
// Will only search elements within #main-view
container.find('anotherSelector');
我想你的泛型部分需要通用性,否则你就不会问了。
所以一个泛型代码可以调用$('#selector')
而不知道上下文。
function $$(selector, context) {
return $(selector, context ? $(context, $$.stack[0]) : $$.stack[0]);
}
$$.stack = [];
$$.push = function(context){ $$.stack.unshift(context); }
$$.pop = function(){ return $$.stack.shift(); }
在你的通用部分使用$$('#selector')
代替$('#selector')
围绕你的泛型代码执行使用:
$$.push('#home-view');
// generic code call using $$
// e.g. $$('#events-cloud') <=> $('#events-cloud', '#home-view') <=> $('#home-view #events-cloud')
$$.pop();
使用这个自定义函数,您可以嵌套上下文,甚至可以使用$$(selector, localcontext)
表单。因此,对于泛型代码,当前全局上下文是完全透明的。
相关文章:
- 正在更新起始日期角度日期范围选择器中的日期选择
- 如何从日期范围选择器中获取两个日期
- 从GWT中的HighCharts库(以及一般的Javascript)自定义Stockchart范围选择器按钮
- 如何按从当前单词到段落中该句子(.)结尾的范围选择文本
- DC.js图表中的初始范围选择
- PayPal按钮,允许客户为金额范围选择具有不同价格的产品数量
- 正在将日期范围选择器转换为角度指令
- 将Highcharts StockChart范围选择器的大小调整为小于6个数据点
- 日期范围选择器,然后再次单击同一项目
- 带有 html 网站中 SQL 数据的范围选择器的高图表
- 为什么高库存范围选择器中有禁用的按钮
- 从 mysql 获取行集,并使用 php 和 Codeigniter 中的 jquery 生成动态范围选择器框
- jqGrid FilterToolbar,主要带有工作日期范围选择器
- 如何将日期范围选择器中选择的日期范围传递给变量或返回到 javascript 中的输入文本框
- 流星:如何让 JS 日期范围选择器调整 API 调用日期参数
- 更新 Twitter 引导程序的日期范围选择器的选定日期
- 如何在同一页面上使用两个引导日期范围选择器
- 使用jQuery添加日期范围选择器并更新内容
- 如何在React日期范围选择器中获取开始和结束日期值
- 为什么我的范围选择器在我的谷歌地图API3/jQuery移动应用程序中不起作用