JQuery Ajax Как я могу передать responseText как переменную в indexOf? - PullRequest
3 голосов
/ 16 июля 2010

Я пытаюсь добавить элемент p из responseText Ajax-запроса.

Перед добавлением я хотел бы посмотреть, существует ли 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();

})

Заранее спасибо за любые предложения.

Ответы [ 3 ]

3 голосов
/ 16 июля 2010

Может быть, потому что вы ищете HTML в текстовом формате. Попробуйте использовать html вместо text:

var text = jQuery('#div').html();
if (text.indexOf(responseText) == -1) {
   ...
1 голос
/ 16 июля 2010

Оберните ответ jQuery и попробуйте сравнить его с представлением text() ...

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

if(div.text().indexOf(resp.text()) == -1)
  resp.appendTo(div)
0 голосов
/ 25 октября 2015

У меня не работало ни одно из указанных выше решений (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>
...