如果el包含此文本,请从中删除此字符串

If el contains this text, remove this string from it?

本文关键字:删除 字符串 el 包含此 文本 如果      更新时间:2024-03-01

我正在尝试检查单击的项目是否包含特定文本,如果包含,请将其删除。

<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 ", ""));
});

上面的代码给了我:Uncaught TypeError: undefined is not a function

jQuery.contains()用于检查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.html().indexOf("All ") != -1)
			self.html(self.html().replace("All ", ""));
	});
<!doctype html>
<html lang="en">
<head>
	<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
	<script>
	</script>
</head>
<body>
	<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>
	
</body>
</html>

您实际上需要设置新的文本内容,除此之外,检查现有字符串的条件可能无法正常工作。

if( $(this).text().indexOf('All ') > -1 ) {
    $(this).text(function(_, text) {
        return text.replace(/All's+/g, '');
    });
}

您需要替换文本。

试试这个。

$("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", ""));
});

这对我有效:

$(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()。