2011-01-07 2 views
1

im пытается узнать, как узнать, возвращается ли ошибка из запроса AJAX. для проверки запроса всегда возвращает <p id="error">test</p>jquery - поиск, если элемент находится в переменной

Я думал, что вы могли бы сделать это следующим образом:

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

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

ответ

2

Если 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);  
} 
+0

Спасибо! этот варп с div разрешает его. ++ 1 – Aristos

1

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

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

if (html.test(/id="error"/i)) { 
    ... 
} 
0

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

$('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.

0

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

if ($(html).find("#error").length != 0) 
{ 
    alert(html);  
} 
Смежные вопросы