2011-01-07 130 views
1

即時通訊試圖找出如何查看是否從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 2013-01-16 12:06:11

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);  
}