jQuery Select Element that has no Class or ID

*爱你&永不变心* 提交于 2019-12-18 09:01:28

问题


Trying to find a selector to get all elements that have both no class, and no id set to them.

So far I have 2 different outputs depending on if there is a space in the selector:

                                      // outputs
        var noID = $('*:not([id])');// 144 - may have a class
        var noClass = $('*:not([class])');  // 100 - may have an id

        var withSpace = $('*:not([id]) *:not([class])'); // 99 ?
        var noSpace= $('*:not([id])*:not([class])'); // 84 ?

Which one is correct, my guess is the noSpace - but I don't know. Anyone tried this before?

My guess is that with the space, the selector is going inside the tag that has no ID, and selecting the children elements that have no class associated with them.

And the noSpace result is the correct one, as it selects only the elemets that have both no class, and no id.

Can someone verify? Thanks!


Answer

Use this selector to find elements that have neither a class, or an id associated with them.

$('*:not([id]):not([class])');

bonus: $('body *:not([id]):not([class])'); - If you only want to deal with the actual content


回答1:


withSpace - $('*:not([id]) *:not([class])'); will find all elements with no class that are inside an element without an ID. Putting a space in the selector is like calling find seperately.

You could change noSpace to be this instead and still get the right result:

var noSpace= $('*:not([id]):not([class])'); // second * not needed

JSFiddle used for testing




回答2:


$("*").not("[class],[id]") 

You can keep adding attributes or classes or tags by a comma seperator

Additional notes http://api.jquery.com/not-selector/

The .not() method will end up providing you with more readable selections than pushing complex selectors or variables into a :not() selector filter. In most cases, it is a better choice

(:not) is faster since it is css3 selector browser but show a real slow query in older browsers ie8 or the browsers that dont support css3

http://jsperf.com/jquery-css3-not-vs-not test results




回答3:


$('*:not([id]):not([class])')

Your withSpace will select elements that don't have a class and have a parent which don't have an id. Not sure about noSpace. UPDATE Oh, it's does the same thing as mine, actually. So, the answer is your last selector.



来源:https://stackoverflow.com/questions/23915504/jquery-select-element-that-has-no-class-or-id

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!