Использование представлений встроенное представление и jquery
Я вызываю блок в шаблоне примерно так:
echo views_embed_view('sessions_by_track', 'block_1');
Где блок на самом деле является отображением вида. Он настроен на вывод списков html, и я хочу сделать с ним некоторые вещи jquery, в том числе скрыть определенные элементы, пока не будет нажато что-то еще.
Вот как выглядит код списка:
<ul data-role="listview">
<li data-role="list-divider"><a href="/tracks/big-picture-0">Big Picture</a></li>
<li class="views-row">
<div class="views-field-title">
<span class="field-content"><a href="/sessions/tracks/partnering">Partnering for Success</a></span>
</div>
</li>
<li class="views-row">
<div class="views-field-title">
<span class="field-content"><a href="/sessions/tracks/the-shopper-economy">The Shopper Economy</a></span>
</div>
</li>
</ul>
У меня есть scripts.js файл, который выглядит следующим образом:
$(document).ready(function() {
alert('test');
$('li.views-row').hide();
});
Предупреждение работает, а скрытие - нет. Однако, когда я запускаю эту строку в Firebug's консоль после завершения загрузки страницы скрытие действительно работает. Таким образом, кажется, что представление отображается после запуска document.ready. Кажется, я припоминаю, что читал что-то об этом раньше, и решение было, но, конечно, теперь, когда оно мне нужно, я ни за что на свете не смогу его найти. Что мне нужно сделать, чтобы обойти это?
Отредактировано для добавления: Drupal 6, Views2
Отредактировано снова, чтобы добавить: Я также пробовал это: в template.php добавлена эта функция:
function mobile_jquery_preprocess_page(&$vars, $hook) {
$vars['embedded_sessions'] = views_embed_view('sessions_by_track', 'block_1');
$vars['scripts'] = drupal_get_js();
}
А затем вызываю его в мой шаблон страницы выглядит так:
print $embedded_sessions;
Тот же результат.
Отредактировано еще раз, чтобы добавить, что я попытался добавить новый регион в свой шаблон, назначить блок этому региону, а затем распечатать его с помощью print $mobileContent;
в шаблоне страницы. Тот же результат - предупреждение запускается при загрузке, но скрытие не выполняется. Скрытие отлично работает в консоли Firebug, поэтому я знаю, что селектор в порядке.
Отредактировано еще раз для @tim.plunkett
В файл под названием scripts.js, расположенный в сайты/все/темы/mobile_jquery/скрипты, я добавил это (сейчас в файле больше ничего нет):
(function ($) {
console.log('behavior triggered');
// Store our function as a property of Drupal.behaviors.
Drupal.behaviors.myHomeHideLists = function (context) {
// Find all the li items inside context that have our desired class
$('li.views-row)', context)
// hide them.
.hide();
};
}(jQuery));
В template.php, Я добавил это (на основе этого ответа):
function mobile_jquery_preprocess_page(&$vars, $hook) {
$vars['embedded_sessions'] = views_embed_view('sessions_by_track', 'block_1');
drupal_add_js(drupal_get_path('theme', 'mobile_jquery').'/scripts/script.js', 'theme');
$vars['scripts'] = drupal_get_js();
}
Консоль.журнал запускается и печатается, но элементы списка, соответствующие селектору, не скрываются.