Поиск класса CSS в объекте jQuery, который был заполнен из XML - PullRequest
0 голосов
/ 29 июня 2010

Я заполнил асинхронную функцию AJAX, которая получает данные из XML:

$.ajax({
    type: "GET",
    url: "/content/en_GB/banner-data.xml",
    dataType: "xml",
    success: function(xml) {
        $(xml).find('item').each(function(){
        var section = $(this).attr('section');
        var title = $(this).attr('title');
        var tabid = $(this).attr('tabid');
        var image = $(this).attr('image');

        var banner = $("<div class='banner-textarea'></div>");

        banner.append($("<span class='hidden panelButtonLabel'></span>").html(section));
        banner.append($("<h2></h2>").html(title));
        $(this).find('section').each(function(){
        var alink = $(this).attr('link');
        var desc = $(this).text();
        banner.append($("<a href='"+alink+"'></a>&nbsp;|&nbsp;").html(desc));
        });

        //banner = $("<div class='banner-textarea'></div>").html(banner);
        banner = $("<div id='tab"+tabid+"' class='mini-banner-img'></div>").html(banner);
        banner = $("<li class='panelsLi'></li>").html(banner);

Но я также должен изменить существующий скрипт, чтобы я мог применить функции карусели к объекту "banner".

У меня проблемы с захватом класса панели в:

$(".panelsCarousel").each(function(){

//init
var divObj=$(this);

var intervalHnd=null;   //timer handler

// get the widget params
var params=divObj.getJsonComment();
var duration=params.duration||6000;                                     

var ul=divObj.find("ul");
var LIs=banner.find("panelsLi"); < FAILS HERE

последняя строка не находит класс. Вы можете помочь?

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 29 июня 2010

Ваш текущий jQuery-селектор panelsLi фактически нацелен на элементы с этим тегом , а не с этим классом (то есть тегами).Чтобы нацелиться на класс, вам нужно запустить селектор с .:

var LIs=banner.find(".panelsLi");  <-- classes start with .

Обновление: Я не вижу кода, который добавляет PanelLi к документу?Когда рендеринг ajax обновляется, вы действительно видите panelsLi, отображаемый на экране?

Переменная banner в вашем коде в настоящее время существует только в рамках вашей успешной функции обратного вызова ajax - она ​​не будетдоступны для других функций за пределами этой области, если вы не объявите переменную за пределами области, или добавите панель в документ, а затем используете jQuery, чтобы позже получить новую ссылку на него.

0 голосов
/ 29 июня 2010

Вам не хватает точки (.) для класса, вместо:

var LIs=banner.find("panelsLi");

Попытка:

var LIs=banner.find(".panelsLi");

См:

JQuery Class Selector

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...