“All but not” jQuery selector

后端 未结 7 1356
谎友^
谎友^ 2020-12-05 16:44

I can select (using jQuery) all the divs in a HTML markup as follows:

$(\'div\')

But I want to exclude a particular div (say h

相关标签:
7条回答
  • 2020-12-05 17:18
    $('div:not(#myid)');
    

    this is what you need i think.

    0 讨论(0)
  • 2020-12-05 17:20
    var els = toArray(document.getElementsByTagName("div"));
    els.splice(els.indexOf(document.getElementById("someId"), 1);
    

    You could just do it the old fashioned way. No need for jQuery with something so simple.

    Pro tips:

    A set of dom elements is just an array, so use your favourite toArray method on a NodeList.

    Adding elements to a set is just

    set.push.apply(set, arrOfElements);

    Removing an element from a set is

    set.splice(set.indexOf(el), 1)

    You can't easily remove multiple elements at once :(

    0 讨论(0)
  • 2020-12-05 17:27

    Simple:

    $('div').not('#myid');
    

    Using .not() will remove elements matched by the selector given to it from the set returned by $('div').

    You can also use the :not() selector:

    $('div:not(#myid)');
    

    Both selectors do the same thing, however :not() is faster, presumably because jQuery's selector engine Sizzle can optimise it into a native .querySelectorAll() call.

    0 讨论(0)
  • 2020-12-05 17:27
       var elements =  $('div').not('#myid');
    

    This will include all the divs except the one with id 'myid'

    0 讨论(0)
  • 2020-12-05 17:31

    That should do it:

    $('div:not("#myid")')
    
    0 讨论(0)
  • 2020-12-05 17:42
    $("div:not(#myid)")
    

    [doc]

    or

    $("div").not("#myid")
    

    [doc]

    are main ways to select all but one id

    You can see demo here

    0 讨论(0)
提交回复
热议问题