2010-07-16 80 views
3

我想从Ajax请求的responseText中追加一个p元素。jQuery Ajax如何将responseText作为变量传递给indexOf?

在追加之前,我想看看如果responseText已经存在于父div元素文本中,并且不加它,如果是这种情况。问题是我不能让indexOf(responseText)使用变量responseText工作。当我将字符串文字传递给indexOf时,我的代码有效。

这里是我的代码:

jQuery('#addButton').live('click', function() { 

    new Ajax('<url>', { 
     method: 'get', 
     dataType: 'html', 
     onSuccess: function (responseText) { 
      var text = jQuery('#div').text(); 

      if (text.indexOf(responseText) == -1) { 
       //always true using responseText; 
       //string literal works though 
       jQuery('#div').append(responseText); 
      } 
     } 
    }).request(); 

}) 

在此先感谢您的任何建议。

+0

是什么'responseText'和'#div'文本看起来像? – Anurag 2010-07-16 19:34:56

回答

1

总结与jQuery的响应,并尝试与它的text()表现的比较......以上

var resp = $(responseText); 
var div = $("#div"); 

if(div.text().indexOf(resp.text()) == -1) 
    resp.appendTo(div) 
+0

这个作品谢谢你。 – netefficacy 2010-07-16 19:54:07

3

也许是因为您在纯文本中查找html。尝试使用html代替text

var text = jQuery('#div').html(); 
if (text.indexOf(responseText) == -1) { 
    ... 
+0

这个作品谢谢你。 – netefficacy 2010-07-16 19:53:27

0

没有解决方案是为我工作(jQuery的1.11。 2)。

但是我发现我的最终解决方案:$(my_variable).selector

它的工作原理没有问题对我来说:

var responseText = "word"; 
 
var resp = $(responseText).selector; 
 

 

 

 
$("div").each(function() { 
 
    if ($(this).text().indexOf(resp) >= 0) { 
 
    alert("I've found your query: " + resp + " at " + $(this).offset().left + "/" + $(this).offset().top); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div>THis is a test</div> 
 
<div>I'm searching for this word</div> 
 
<div>nothing here</div>