jquery - находит ли элемент в переменной - PullRequest
1 голос
/ 07 января 2011

Я пытаюсь выяснить, как проверить, не возвращена ли ошибка из запроса AJAX.для проверки запрос всегда возвращает <p id="error">test</p>

Я думал, что вы можете сделать это так:

//html is the var which contains the result
var DOM = $(html);
if( $('#error', DOM ).length != 0 ) {
    alert(html);    
}

, но это не работает.Кто-нибудь может пролить свет на то, что идет не так?

Ответы [ 4 ]

2 голосов
/ 07 января 2011

Если ваш HTML-код не заключен во что-то (например, div), тогда он должен быть.

var html = '<div></div><p id="error">ERROR!</p><span>other stuff</span>';

var DOM= $('<div>' + html + '</div>');
if( $('#error', DOM).length != 0 ) {
    alert(html);    
}

Пример: http://jsfiddle.net/jonathon/exqTD/

(я думал wrap помогло бы здесь, но это не помогло. Если кто-то знает почему, укажите на это).

В качестве альтернативы контекст селектора реализован с использованием find , так что вы можете просто сделать:*

if( DOM.find('#error').length != 0 ) {
    alert(html);    
}
1 голос
/ 07 января 2011

Он не вставлен в DOM, поэтому вы не можете найти его с помощью селектора.

Вы можете попробовать использовать простое регулярное выражение с функцией test () для переменной.

if (html.test(/id="error"/i)) {
   ...
}
0 голосов
/ 07 января 2011

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

if ( $(html).find("#error").length != 0 )
{
    alert(html);    
}
0 голосов
/ 07 января 2011

Проверьте, поможет ли это:

$('body').append('<div class="hidden_div">'+html+'</div>');
if($('#error',$('.hidden_div')).size()>0){
  alert(html);
}

Просто добавьте в CSS

.hidden_div{display:none;}

и это должно быть, о, и вы можете использовать .length или .size()

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

if(html.indexOf('id="error"')>-1){alert('yes we have an error!');}

Приветствия

G.

...