3

AjaxリクエストのresponseTextからap要素を追加しようとしています。

追加する前に、responseTextが親のdiv要素のテキストにすでに存在するかどうかを確認します。存在する場合は追加しません。問題は、変数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();

})

提案を事前に感謝します。

4

3 に答える 3

3

プレーンテキスト内のhtmlを探しているからかもしれません。htmlの代わりに使用してみてくださいtext

var text = jQuery('#div').html();
if (text.indexOf(responseText) == -1) {
   ...
于 2010-07-16T19:33:26.053 に答える
1

応答をjQueryでラップし、その表現との比較を試してくださいtext()...

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

if(div.text().indexOf(resp.text()) == -1)
  resp.appendTo(div)
于 2010-07-16T19:35:47.357 に答える
0

上記の解決策は私には機能しませんでした(jQuery1.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>

于 2015-10-25T05:35:43.610 に答える