Как сравнить $ (это)? - PullRequest
       29

Как сравнить $ (это)?

1 голос
/ 08 июля 2011

Как это исправить?

if( $(this) == $(".className") ){
   alert("Yes!");
}

и НЕ ...

if( $(this) != $(".className") ){
   alert("Yes!");
}

Спасибо

Ответы [ 6 ]

5 голосов
/ 08 июля 2011
if($(this).hasClass("className")){
    alert('is class');
}else{
    alert('is not class');
}
2 голосов
/ 08 июля 2011

То, что сделал бы ваш код, - это сравнить объект jQuery, содержащий один элемент, с другим объектом jQuery, содержащим все элементы с определенным классом, так что это предположительно (т.е. если бы это работало) было бы истинным, если бы элемент имел этот класс,и это единственный элемент с этим классом.Я не думаю, что это то, что вы хотите сделать ...

Если вы хотите проверить, есть ли у элемента класс:

if ($(this).hasClass('className')) {
   alert("Yes!");
}

if (!$(this).hasClass('className')) {
   alert("No!");
}
2 голосов
/ 08 июля 2011

Предполагая, что ваш $ (this) является элементом, вы можете проверить, имеет ли он класс 'className':

if ($(this).is('.className')) {
     //$(this) has the class
} else {
     //$(this) doesn't have the class
}
0 голосов
/ 08 июля 2011

Непонятно, что вы хотите сделать, но если вы хотите сравнить два объекта jQuery, чтобы определить, являются ли они одинаковыми (т. Е. Значения, ключи, вся партия), вам следует использовать функцию сравнения объектов.

Некоторые примеры можно найти здесь Сравнение объектов в JavaScript

или вы можете использовать underscore.js для сравнения

http://documentcloud.github.com/underscore/#isEqual

0 голосов
/ 08 июля 2011

Для маленького jQuery я помню следующее:

$(".className")

является селектором, поэтому возвращает вам список объектов,

как это работает, если вы замените его на:

$(".className")[0]

??

0 голосов
/ 08 июля 2011

Вы можете сравнить элементы HTML:

$(this).get(0) == $(".className").get(0);
$(this).get(0) != $(".className").get(0); 

Взято из списка рассылки jQuery :

// Plugin:
(function($){
    jQuery.fn.equals = function(selector) {
        return $(this).get(0)==$(selector).get(0);
    };
})(jQuery); 

// Can be used as:
if (  $(this).equals( $(".className") )) {
   alert('SAME');
} else {
   alert('Not the same');
}
...