Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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 jQuery:是否可以从最多有3个类的元素中选择只有一个类的元素?_Javascript_Jquery_Jquery Selectors - Fatal编程技术网

Javascript jQuery:是否可以从最多有3个类的元素中选择只有一个类的元素?

Javascript jQuery:是否可以从最多有3个类的元素中选择只有一个类的元素?,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,例如,假设我有以下内容: <span class="a b c">Has class a, b, and c</span> <span class="a">Has class a</span> <span class="b c">Has class b and c</span> <span class="a c">Has class a and c</span> <span clas

例如,假设我有以下内容:

<span class="a b c">Has class a, b, and c</span>  
<span class="a">Has class a</span>  
<span class="b c">Has class b and c</span> 
<span class="a c">Has class a and c</span> 
<span class="a c">Has class a and c</span> 
<span class="a">Has class a</span>
具有a类、b类和c类
有甲级
有b级和c级
有甲级和丙级
有甲级和丙级
有甲级
现在,假设我想选择所有只有类a的元素。
这意味着只有第二个和最后一个
span
s会被选中。

有没有简单的方法可以做到这一点?

我想如果你想做到这一点,你可以简单地做到:

var spans = $("span[class='a']");
这将选择类别为
a
但没有
b
c
的所有元素。但是,它们仍然可以有类
d
e
,等等。如果您确实只想要除
a

之外没有类的元素,请使用Phil的答案(请参见下文,了解为什么您可能不想完全按照问题中的要求进行操作)

您可以使用
[class=“a”]
“属性等于选择器”,尽管它很脆弱:

$('span[class="a"]').hide();
问题是,如果class属性中有任何空格,那么它就会中断。看这把小提琴:

您可以通过使用普通类选择器对这些项执行基本查询来解决此问题,然后进一步过滤它们,同时只检查
a
是否已设置(并在第二个过滤器中修剪空白)。看这把小提琴:


这个问题看起来像是在试图制造出更多“经得起未来考验”的代码,但这种特定的方法更加脆弱。拒绝所有与您正在筛选的当前类不相关的类可能会因为与类
a
不相关的原因(例如稍后添加的不相关的类
d
e
)而导致内容中断。如果要应用jQuery的HTML将来可能会更改,这一点很重要


更好的方法是只过滤掉影响class
A
含义的类。允许这种灵活性实际上是使您的代码更加经得起未来考验的原因。请参阅以获取最佳方法。

另一种方法是删除该类,然后检查是否还有任何类保留。如果否,则执行该功能:

使用以下命令:

jQuery:

$('[class="a"]');
JavaScript:

document.querySelectorAll("[class='a']");

OP的简要说明:您不必像Phil在这里那样在选择器中包含单词
span
。如果有可能具有所需类的div或img,并且您希望选择它们,
$(“[class='a']”)将执行此操作。问题是,如果属性包含任何空格,它将中断。类选择器没有这个问题。向上投票是因为在很多情况下允许不相关的类可能更可取,并且生成的代码更干净。虽然这不是一个“未来证明”,但您可能不会真正想要我的答案给出的那种未来证明(与OP中的确切问题相匹配)。我得到
Uncaught TypeError:$(…)。not不是一个函数,而这段代码可以解决问题,如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。
$('.a').each(function () {
    var $this = $(this);
    if (!$this.removeClass('a').attr('class').length) {
       //Execute function here
    }
});
$('[class="a"]');
document.querySelectorAll("[class='a']");