我让用户输入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">
&#13;
但无论如何jQuery(".jumbotron").remove();
正在发生。我知道,因为所有结果都已使用$this.parent().parent().remove();
删除,我看不到它们,只留下正确匹配的字符串结果。
data variable
提供了一个项目列表:
<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 :(得分:1)
此代码中存在登录漏洞。 Jumbotron被删除总是因为单个不匹配(在任何字符串上)将其删除。
在更新的代码中(使用hide()和show())存在类似的问题。即使发生匹配并显示了jumbotron,下一次比较也会再次隐藏它。
解决方案是首先(在每个()循环之前)隐藏jumbotron并仅在匹配发生时显示它。