jquery - 查找元素是否在变量中

时间:2011-01-07 09:28:54

标签: javascript jquery variables dom-traversal

我试图找出如何查看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 个答案:

答案 0 :(得分: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);    
}

答案 1 :(得分:1)

它没有插入到DOM中,因此您无法使用选择器进行查找。

您可以尝试在变量上使用带有test()函数的简单正则表达式。

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

答案 2 :(得分: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。

答案 3 :(得分:0)

您可以使用查找功能:

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