Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 如果标签包含此而不是此前缀*_Javascript_Jquery_Contains - Fatal编程技术网

Javascript 如果标签包含此而不是此前缀*

Javascript 如果标签包含此而不是此前缀*,javascript,jquery,contains,Javascript,Jquery,Contains,如果标签包含城市、州和邮政编码,我将尝试添加一个*。另外,我只希望在标签中不存在*时发生。不确定是否可以将包含和不包含连接在一起。另外-我不能编辑表单,一些字段已经*随机输入。这里有两种方法对我来说是失败的 这是小提琴- 这是jQuery //$("label:contains('City'):not(:contains('*'),label:contains('Address'),label:contains('State'),label:contains('Zip')").prepend(

如果标签包含城市、州和邮政编码,我将尝试添加一个*。另外,我只希望在标签中不存在*时发生。不确定是否可以将包含和不包含连接在一起。另外-我不能编辑表单,一些字段已经*随机输入。这里有两种方法对我来说是失败的

这是小提琴-

这是jQuery

//$("label:contains('City'):not(:contains('*'),label:contains('Address'),label:contains('State'),label:contains('Zip')").prepend( "* " );


$("label:contains('City'):not(:contains('*'),label:contains('Address'),label:contains('State'),label:contains('Zip')").prepend( "* " );
得到了答案。。。但也许我可以从另一个角度来看待这个问题。。。你能简化这个过程吗。类似于标签:包含“城市”、“州”、“等…”:不:包含“*”。前缀*或可能的工作方式:]


这是无法简化时的情况-$label:contains'City':not:contains'*',label:contains'Mailing Address':not:contains'*',label:contains'State',label:contains'posal Code':not:contains'*',prepend*

似乎很有效,你只是错过了一个


看起来很有效,你只是错过了一个


您可以在prepend函数本身中检查文本,而不是设置复杂的查询:

$('label:not(:contains("*"))').prepend(function(_, txt) {
  return 'AddressCityStateZip'.indexOf(txt)>-1 ? '* ' : '';
});
函数查找字符串中的文本,如果未找到,则返回-1

所以,如果txt是'City','AddressCityStateZip'。indexOftxt将返回7


如果存在匹配项,则返回星号,否则将不返回任何内容。

您可以在prepend函数本身中检查文本,而不是设置复杂的查询:

$('label:not(:contains("*"))').prepend(function(_, txt) {
  return 'AddressCityStateZip'.indexOf(txt)>-1 ? '* ' : '';
});
函数查找字符串中的文本,如果未找到,则返回-1

所以,如果txt是'City','AddressCityStateZip'。indexOftxt将返回7


如果存在匹配项,则返回一个星号,否则将不返回任何内容。

包含选择器速度非常慢,添加一整套选择器对速度或可维护性都没有帮助。您应该改用.filter:

另外,您是否考虑过使用css来代替调用?它有几个优点。其中之一就是你不必担心修改文本

label.required:before { content: '* ' }
此外,您可以直接从标记中设置样式,而无需使用javascript:

<label class="required">..</label>

contains选择器非常慢,添加一整套选择器对提高速度和可维护性都没有帮助。您应该改用.filter:

另外,您是否考虑过使用css来代替调用?它有几个优点。其中之一就是你不必担心修改文本

label.required:before { content: '* ' }
此外,您可以直接从标记中设置样式,而无需使用javascript:

<label class="required">..</label>

哦,我以为我已经走上正轨了。有时候,第二双眼睛会发现最简单的错误——谢谢。呵呵,这肯定会发生。没问题:也许我可以从另一个方向来看待这个问题。。。你能简化这个过程吗。类似于label:contains'City'、'State'、'etc..:not:contains'*'。prepend*或者可能是一种有效的方式:]如果不能简化,它就是这样-$label:contains'City':not:contains'*',label:contains'Mailing Address':not:contains'*',label:contains'State',label:contains'posal Code':not:contains'*'。prepend*;明白了。我想是这样的。在这种情况下,里克的回答是最好的。哦,我以为我已经走上正轨了。有时候,第二双眼睛会发现最简单的错误——谢谢。呵呵,这肯定会发生。没问题:也许我可以从另一个方向来看待这个问题。。。你能简化这个过程吗。类似于label:contains'City'、'State'、'etc..:not:contains'*'。prepend*或者可能是一种有效的方式:]如果不能简化,它就是这样-$label:contains'City':not:contains'*',label:contains'Mailing Address':not:contains'*',label:contains'State',label:contains'posal Code':not:contains'*'。prepend*;明白了。我想是这样的。在这种情况下,Rick的答案是最好的。我不能编辑表单,有些字段是*随机输入的。我不能编辑表单,有些字段是*随机输入的。我很好地遵循了这一点,但你能提供有关函数的评论吗。当然,更新了。如果还有什么不清楚的地方,请告诉我。我很好地遵循了这一点,但是你能提供关于函数的评论吗?当然,更新了。如果还有什么不清楚的,请告诉我。