Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果el包含此文本,是否从中删除此字符串?_Javascript_Jquery - Fatal编程技术网

Javascript 如果el包含此文本,是否从中删除此字符串?

Javascript 如果el包含此文本,是否从中删除此字符串?,javascript,jquery,Javascript,Jquery,我试图检查单击的项目是否包含某个文本,如果是,则将其删除 <ul class="filter option-set dropdown-menu" role="menu" aria-labelledby="dropdownMenu1" data-filter-group="Agencies"> <li><a class="btn btn-default btn-lg" href="#filter-client-any" data-filter-value=""&g

我试图检查单击的项目是否包含某个文本,如果是,则将其删除

<ul class="filter option-set dropdown-menu" role="menu" aria-labelledby="dropdownMenu1" data-filter-group="Agencies">
  <li><a class="btn btn-default btn-lg" href="#filter-client-any" data-filter-value="">All agencies</a></li>

  <li><a id="filter-a" class="btn btn-default btn-lg" href="#filter-agency-a" data-filter-value=".A">A</a></li>
  <li><a id="filter-z" class="btn btn-default btn-lg" href="#filter-agency-z" data-filter-value=".Z">Z</a></li>
  <li><a id="filter-c" class="btn btn-default btn-lg" href="#filter-agency-c" data-filter-value=".c">C</a></li>
  <li><a id="filter-h" class="btn btn-default btn-lg" href="#filter-agency-h" data-filter-value=".h">H</a></li>
</ul>

$(document).on( 'click touchend', '.filter a', function( event ) {
  event.preventDefault();
  var self = $(this);
  if(self.html().indexOf("All ")!=-1)
  self.html(self.html().replace("All ", ""));
});
$(文档).on('单击touchend','.filter a',函数(事件){ event.preventDefault(); var self=$(这是); if(self.html().indexOf(“全部”)!=-1) html(self.html(); });

上面的代码告诉我:
uncaughttypeerror:undefined不是一个函数

您需要替换文本

试试这个

$("a").on("click", function(){
    var self = $(this);
    if(self.html().indexOf("All")!=-1)
    self.html(self.html().replace("All", ""));
});
或者您可以使用
$(“a:contains('All'))
选择器

$("a:contains('All')").on("click", function(){
    var self = $(this);
    self.html(self.html().replace("All", ""));
});
除了检查现有字符串的条件可能无法正常工作之外,您还需要实际设置新的文本内容

if( $(this).text().indexOf('All ') > -1 ) {
    $(this).text(function(_, text) {
        return text.replace(/All\s+/g, '');
    });
}
用于检查一个DOM元素是否是另一个DOM元素的后代

您必须使用本机
match()
或任何其他方式。试试这个

<a href="#">All works</a>
<script type="text/javascript">
$(document).ready(function() {
    $("a").on("click", function() {
        if ($(this).text().match("All ").index != -1) {
            $(this).text($(this).text().replace(/All /g, ''));
        }
    });
});
</script>

这对我很有用:

$(document).on( 'click touchend', '.filter a', function( event ) {
  var self = $(this);
  if (self.text().indexOf("All ") > -1) {
    self.text(self.text().replace("All ", ""));
  }
});

请注意,我使用的是.text(),而不是.html()。

它是否仍在if中?我仍然需要检查它是否有。为什么需要检查它,如果它有,它将替换它,否则它不会抛出错误。请参阅我更新的完整代码中的问题,你的回答仍然给我一个未知的类型错误:undefined不是一个函数,我想它工作得很好。。你是否包括jQuery?当我点击
所有机构
时,它会将其替换为
机构
。查看更新的问题和完整的代码,应用时你回答给我:未捕获类型错误:无法读取Null的属性“索引”是的,我可以看到它正在工作,通过阅读你的代码,我已经可以看到这是正确的,因此,我必须有其他的东西,因为它仍然给我的错误在我这边,你猜怎么着?我必须将代码放在event.preventDefault()之前,我不确定为什么要使用
.html()
来操作DOM元素-它将元素转换为文本,然后再返回到节点,破坏在这些节点上注册的任何其他更改或事件处理程序。不过,创建新元素也可以。