jQuery object equality

前端 未结 7 1743
醉梦人生
醉梦人生 2020-11-22 14:37

How do I determine if two jQuery objects are equal? I would like to be able to search an array for a particular jQuery object.

$.inArray(jqobj, my_array);//-         


        
相关标签:
7条回答
  • 2020-11-22 15:05

    Since jQuery 1.6, you can use .is. Below is the answer from over a year ago...

    var a = $('#foo');
    var b = a;
    
    
    if (a.is(b)) {
        // the same object!
    }
    

    If you want to see if two variables are actually the same object, eg:

    var a = $('#foo');
    var b = a;
    

    ...then you can check their unique IDs. Every time you create a new jQuery object it gets an id.

    if ($.data(a) == $.data(b)) {
        // the same object!
    }
    

    Though, the same could be achieved with a simple a === b, the above might at least show the next developer exactly what you're testing for.

    In any case, that's probably not what you're after. If you wanted to check if two different jQuery objects contain the same set of elements, the you could use this:

    $.fn.equals = function(compareTo) {
      if (!compareTo || this.length != compareTo.length) {
        return false;
      }
      for (var i = 0; i < this.length; ++i) {
        if (this[i] !== compareTo[i]) {
          return false;
        }
      }
      return true;
    };
    

    Source

    var a = $('p');
    var b = $('p');
    if (a.equals(b)) {
        // same set
    }
    
    0 讨论(0)
提交回复
热议问题