2011-01-07 9 views
1

これは、AJAXリクエストからエラーが返されたかどうかを調べるためです。jquery - 要素が変数内にあるかどうかを調べる

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

が、これは動作しません:要求をテストするための はいつも、私はあなたがこのようにそれを行うことができると思った<p id="error">test</p>

を返します。誰かが間違っていることに光を照らすことができますか?

答えて

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

あなたはfind関数を使用することができます。

if ($(html).find("#error").length != 0) 
{ 
    alert(html);  
}