Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改jquery选择范围_Javascript_Jquery - Fatal编程技术网

Javascript 更改jquery选择范围

Javascript 更改jquery选择范围,javascript,jquery,Javascript,Jquery,在特定页面javascript中编写jQuery选择器时,我希望能够使用简化的作用域选择机制 要当前引用元素,我需要使用完整选择器: $('#home-view #events-cloud')' 由于上面的代码行是在主视图支持js文件中使用的,因此我希望能够执行以下操作: $.SetSelectorPrefix('#home-view'); $('#events-cloud'); var container = $('#home-view'); // Will only search ele

在特定页面javascript中编写jQuery选择器时,我希望能够使用简化的作用域选择机制

要当前引用元素,我需要使用完整选择器:

$('#home-view #events-cloud')'
由于上面的代码行是在主视图支持js文件中使用的,因此我希望能够执行以下操作:

$.SetSelectorPrefix('#home-view');
$('#events-cloud');
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');

是否有可能采取措施解决代码位置特定的选择问题?

您可以使用以下方法:

$.SetSelectorPrefix('#home-view');
$('#events-cloud');
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');

您可以使用以下内容:

$.SetSelectorPrefix('#home-view');
$('#events-cloud');
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');

只需修改默认的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默认分配给$

将$new modified函数赋值给$new modified函数,该函数将返回一个新的jQuery实例,该实例的上下文已针对您的目的进行了修改。这就是脚本的线索

$.fn = $.prototype = jQuery.fn;
为$function创建一个新属性fn,并将其分配给从jQuery.fn继承属性的原型

使用jQuery函数扩展所创建的对象,因此可以像jQuery一样使用它


请参阅此代码段的一部分。

只需修改默认的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默认分配给$

将$new modified函数赋值给$new modified函数,该函数将返回一个新的jQuery实例,该实例的上下文已针对您的目的进行了修改。这就是脚本的线索

$.fn = $.prototype = jQuery.fn;
为$function创建一个新属性fn,并将其分配给从jQuery.fn继承属性的原型

使用jQuery函数扩展所创建的对象,因此可以像jQuery一样使用它


请参阅此代码段的一部分。

我想您的泛型部分需要泛型,否则您不会要求

因此,通用代码可以在不知道上下文的情况下调用$'selector'

最简单的方法:使用自定义函数$$ 在泛型部分中,使用$$'selector'而不是$'selector'

围绕通用代码执行,请使用:

$$.push('#home-view');

// generic code call using $$
// e.g. $$('#events-cloud') <=> $('#events-cloud', '#home-view') <=> $('#home-view #events-cloud')

$$.pop();

使用此自定义函数,您可以嵌套上下文,甚至可以使用$$选择器localcontext表单。因此,对于泛型代码,当前的全局上下文是完全透明的。

我想您需要泛型部分的泛型,否则您不会要求

因此,通用代码可以在不知道上下文的情况下调用$'selector'

最简单的方法:使用自定义函数$$ 在泛型部分中,使用$$'selector'而不是$'selector'

围绕通用代码执行,请使用:

$$.push('#home-view');

// generic code call using $$
// e.g. $$('#events-cloud') <=> $('#events-cloud', '#home-view') <=> $('#home-view #events-cloud')

$$.pop();

使用此自定义函数,您可以嵌套上下文,甚至可以使用$$选择器localcontext表单。因此,对于泛型代码,当前的全局上下文是完全透明的。

为什么需要将范围设置为父元素?在您拥有的任何函数中,您都可以执行var that=$this.closest'home-view',并且您可以引用父元素?为什么您需要将作用域设置为父元素?在您拥有的任何函数中,您都可以执行var that=$this.closest'home-view',并且您可以引用父元素?如果泛型代码需要使用$而不知道它的作用域,这是一个很好的答案。但是上下文| |覆盖会失去这种透明度并变得危险,因为$'sel',ctx'可以找到“主视图”范围之外的元素:sIt并不危险,它是需要的。通过使用此选项,您可以使用或不使用上下文参数。如果要更改jQuery的默认上下文,可以添加参数,就完成了。否则,根据OP的请求,当使用jQuery选择器时,如果未指定上下文,则强制在默认上下文中搜索这些选择器。我认为OP希望使用$selector,就好像它是$home view+selector一样。无论如何,只要省略上下文参数和零件上下文| |,就可以很容易地避免这个问题。如果没有文档记录,这是一个问题。现在这是一个特征;-其他未记录的问题或特征;:jQuery没有限定范围,只有速记$,在使用基于初始jQuery的编写良好的插件时可以挽回面子,但是使用global$会有一个陷阱。如果通用代码需要使用$而不知道它是限定范围的,这是一个很好的答案。但是上下文| |覆盖会失去这种透明度并变得危险,因为$'sel',ctx'可以找到“主视图”范围之外的元素:sIt并不危险,它是需要的。通过使用此选项,您可以使用或不使用上下文参数。如果要更改jQuery的默认上下文,可以添加参数,就完成了。否则,根据OP的请求,当使用jQuery选择器时,如果未指定上下文,则强制在默认上下文中搜索这些选择器。我认为OP希望使用$selector,就好像它是$home view+selector一样。无论如何,只要省略上下文参数和零件上下文| |,就可以很容易地避免这个问题。如果没有文档记录,这是一个问题。现在这是一个特征;-其他未记录的问题或f 特征;:jQuery没有限定范围,只有速记$,在使用基于初始jQuery的编写良好的插件时,速记$可以挽回面子,但是使用global$存在一个陷阱。