Javascript 将jQuery选择器限制为某个元素的子元素

Javascript 将jQuery选择器限制为某个元素的子元素,javascript,jquery,jquery-selectors,conflicting-libraries,Javascript,Jquery,Jquery Selectors,Conflicting Libraries,我有一系列通过Javascript嵌入到各种页面中的应用程序,因此在构建选择器时要尽可能小心,不要意外地选择父页面上的内容。(我无法控制父标记,iFrame不是选项。) 父页面都在.noConflict()模式下使用jQuery,并且我的应用程序始终位于div中,类为my\u app\u class (function($) { var el = $(".my_app_class"); //my code }(window.jQuery)); 虽然我总是记得在我的jQ选择器前面加上“

我有一系列通过Javascript嵌入到各种页面中的应用程序,因此在构建选择器时要尽可能小心,不要意外地选择父页面上的内容。(我无法控制父标记,iFrame不是选项。)

父页面都在
.noConflict()
模式下使用jQuery,并且我的应用程序始终位于
div
中,类为
my\u app\u class

(function($) {
    var el = $(".my_app_class"); //my code

}(window.jQuery));
虽然我总是记得在我的jQ选择器前面加上“my_app_class”,但如果这是
$
中隐含的话,我会更舒服。基本上,我想:

$(".headline")
要始终平等:

$(el).find(".headline")
这样做的天真方式如下:

$ = function(selector) {
    return jQuery(el).find(selector);
}
但是我想为我确实需要在父页面上进行选择的情况(这种情况时有发生)维护一个超级函数。我也不想覆盖jQuery的其他用途,比如
$.ajax

最好的方法是对函数进行别名并维护原始函数?我想要这样的东西

(new $) = selection inside `.my_app_class`

($$) = (old $)

谢谢

您正在尝试的是一个维护难题。如果其他人拿起你的代码,他们会很困惑地试图将jQuery语法转换成你想要它做的事情

如果您改为将代码编写为简单的jQuery插件,应用于适当的类。然后:

1) 您会发现它们自然地只应用于相关元素,而不会攻击jQuery本身和

2) 您突然可以将它们应用于动态加载的内容(同样基于类,但这次是在加载的内容中)


有许多模型可以将代码编写为插件。一个简单的是jQueryUI
$;看起来差不多是你的问题:更好的解决方案。谢谢!