У меня есть ряд приложений, которые встроены через Javascript на разных страницах, поэтому важно быть максимально осторожными в отношении создания селекторов таким образом, чтобы не было случайно выберите что-либо на родительской странице. (Я не имею никакого контроля над родительской разметкой, и плавающие фреймы не вариант.)Ограничить селекторы jQuery для детей определенного элемента
Родительских страницами все используют JQuery в режиме .noConflict()
, и мое приложение всегда живет внутри div
с классом my_app_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 $)
Спасибо!
Посмотрите здесь; более или менее похожий вопрос: http://stackoverflow.com/questions/3690447/override-default-jquery-selector-context –