Ориентация на iFrame один раз с помощью jQuery

У меня есть серия кадров (4), которые используются на странице для создания загрузки динамического контента через вызовы Ajax.

В каждом из этих кадров я нацеливаюсь на элементы родительского уровня и обновляю их соответствующим содержанием, например

$("#loadingGrid1",top.document).show();
$("#frameSkills",top.document).hide();

В jQuery есть способ вместо того, чтобы нацеливаться на определенные элементы на родительской странице несколько раз, просто нацелить страницу один раз в переменную, например

var parentPage=$('#frameSkills',top.document);

А затем использовать эту переменную для применения контента, как $(parentPage > #loadingGrid1).hide()

Надеюсь, я объяснил, что мне нужно. По сути, мне приходится вызывать "top.document" в каждом селекторе jQuery, который я делаю, и это кажется пустой тратой энергии.

3 ответа

Объект Jquery может использоваться как контекст, как узел DOM.

var parentPage = $('#frameSkills',top.document);
$("#myselector", parentPage).dostuff();

Или вы можете использовать find функция:

parentPage.find("#myselector").dostuff();

Как насчет делегатов?

Что-то вроде этого кажется мне наиболее чистым:

var page = $(top.document); //Define once
page.find("#loadingGrid1").show();
page.find("#frameSkills").hide();

Когда вы звоните $(selector, context) Вы (во всяком случае, как это все равно) звоните context.find(selector) внутри в любом случае... может также облегчить чтение / запись / цепочку на ходу.

Другие вопросы по тегам