2017-04-15 12 views
0

私はユーザにinputの単語または文章を入力させ、これを他の文字列と比較します。それから私は、一致する文字列があるかどうかを確認するために、各文字列の結果に.eachを実行するので、他を続ける場合は賢明ないくつかの要素を削除します。文字列を比較すると間違った結果が出る

var text2; 
 
var text2B; 
 
text2 = jQuery('#usp-title').val(); 
 
text2B = text2.toLowerCase(); 
 
jQuery("#datafetch").html(data).promise().done(function() { 
 
    jQuery("#datafetch ul li h2 a").each(function() { 
 
    var $this = jQuery(this); 
 
    if ($this.text().toLowerCase().trim() !== text2B.trim()) { 
 
     $this.parent().parent().remove(); 
 
     jQuery(".jumbotron").remove(); 
 
     jQuery("#componi").removeAttr("disabled", "disabled").show(); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="#usp-title" type="text">
しかし jQuery(".jumbotron").remove();はとにかく起こっています。私はすべての結果が $this.parent().parent().remove();で取り除かれているので私はそれを知っています、そして、私はそれらを見ず、正しい一致する文字列結果だけを残します。私も試してみました

<div id="#datafetch"> 
    <ul> 
    <li> 
     <h2> 
     <a>Lorem</a> 
     </h2> 
    </li> 
    <li> 
     <h2> 
     <a>Ipsum</a> 
     </h2> 
    </li> 
    <li> 
     <h2> 
     <a>Dolor</a> 
     </h2> 
    </li> 
    </ul> 

if ($thisText !== text2B.trim()) { 
     jQuery(".jumbotron").hide(); 
     $this.parent().parent().remove(); 
     jQuery("#componi").removeAttr("disabled", "disabled").show(); 
     } else { 
     jQuery(".jumbotron").show(); 
    } 
+0

'data'変数には何がありますか? – ischenkodv

+0

あなたのコードでは、少なくとも1つの文字列が一致しないときに.jumbotronが削除されるので、もちろんあなたの例では常に削除されます。 – endrju

+0

はい、一致するものがあってもshow()が呼び出されても、次回の比較ではhide()が呼び出されます(最後に比較された文字列が正しい場合を除きます)。 – endrju

答えて

1

このコードでログイン欠陥がありdata variable

は、項目のリストを提供します。 Jumbotronは、単一の不一致(任意の文字列上)が削除するため常に削除されます。

更新されたコード(hide()およびshow())にも同様の問題があります。マッチが発生し、ジャンボトロンが表示されても、次の比較で再びマントトロンが隠れます。

解決策は、最初に(各ループの前に)ジャンボトロンを隠し、一致が発生したときにのみ表示します。

関連する問題