jQuery - использование длины для поиска div после вызова ajax - PullRequest
1 голос
/ 04 февраля 2011

ОБНОВЛЕНИЕ:

Проблема заключалась в том, что div был в div, который был скрыт, когда div имеют скрытую длину, offset (), position () работают неправильно.

// Исходное сообщение ниже.


Это должно быть просто.

Я пытаюсь проверить, существует ли div на странице после вывода ajax .html ()

if($('#'+mydiv).length != 1) {
   // do stuff
}

есть только одна проблема, если div, который вы ищете, отсутствует, когда (document) .ready срабатывает, а .length не видит его.

Ответы [ 5 ]

3 голосов
/ 04 февраля 2011

Вы можете просто использовать метод size ()

if($('#'+mydiv).size() != 1) {
   // do stuff
}

Это пересчитывает количество подходящих элементов в DOM.

2 голосов
/ 04 февраля 2011

Если вы выполняете асинхронный запрос, который, как я полагаю, вы (async:true в JQuery), то вы должны использовать size () в успешном обратном вызове вашей функции после добавления содержимого.

   $.ajax({
        url: requestUrl,
        type: 'POST',
        dataType: 'json',
        data: {},
        success: function(response) {
                $('#container').html(response.data);
                if($('someSearch').size() > 0)
                    alert('exists');
            }
    });
1 голос
/ 01 мая 2012

Я столкнулся с точно такой же проблемой с тикером после загрузки содержимого страницы с помощью ajax - мое решение заключалось в использовании плагина livequery : http://github.com/brandonaaron/livequery/downloads. Затем я использую его в следующемспособ:

$('.ticker').livequery(function() {     
    if ($(this).length > 0) {
        var thisObj = $(this);
        if (thisObj.length > 1) {
            jQuery.each(thisObj, function() {                   
                systemObject.tickerExe($(this));
            });
        } else {    
            systemObject.tickerExe(thisObj);
        }
    }
});

Надеюсь, это поможет.

1 голос
/ 04 февраля 2011

Вы можете использовать что-то вроде:

$('#loader').load('url', {variable1:var1}, function () { 
    if($('#'+mydiv).length != 1) {
       // do stuff
    }
});

Это должно выглядеть для всего, что загружено после завершения загрузки.

0 голосов
/ 06 мая 2012

Убедитесь, что ваш div не скрывается при проверке длины.Обычно скрытые элементы могут вызывать множество проблем.

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