jQuery Ajax如何将responseText作为变量传递给indexOf?

3

我正在尝试从Ajax请求的responseText中追加一个p元素。

在追加之前,我想先查看父div元素文本中是否已经存在responseText,如果是,则不添加。问题是,我无法使用responseText变量使indexOf(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();

})

感谢您提前给出的任何建议。

responseText#div的文本长什么样? - Anurag
3个回答

2
也许是因为您在纯文本中寻找HTML。尝试使用html而不是text:
var text = jQuery('#div').html();
if (text.indexOf(responseText) == -1) {
   ...

0

用jQuery包装响应并尝试与其text()表示进行比较...

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

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

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>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接