我正在尝试检查点击的项目是否包含某个文本,如果是,则将其删除。
<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
答案 0 :(得分:1)
您需要实际设置新文本内容,除此之外,检查现有字符串的条件可能不会那样。
if( $(this).text().indexOf('All ') > -1 ) {
$(this).text(function(_, text) {
return text.replace(/All\s+/g, '');
});
}
答案 1 :(得分:1)
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 ", ""));
});
&#13;
<!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>
&#13;
答案 2 :(得分:0)
您需要替换文字。
试试这个。
$("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", ""));
});
答案 3 :(得分:0)
这对我有用:
$(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()。