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元素-它将元素转换为文本,然后再返回到节点,破坏在这些节点上注册的任何其他更改或事件处理程序。不过,创建新元素也可以。