Как я могу проверить, что такое $ (this)? - PullRequest
2 голосов
/ 28 сентября 2010

Этот вопрос относится к этому сообщению , но я не понимаю, как задать другой вопрос в этом же вопросе.

Мне нужно знать, что это такое $(this).Если я предупреждаю $(this), я получаю [object Object].Другими словами, когда мне нужно alert($(this)), мне нужно, чтобы результатом был конкретный тег <li>, чтобы я мог выполнять оператор IF ELSE при откате конкретной ссылки.

Спасибо.Джеймс

Ответы [ 5 ]

5 голосов
/ 28 сентября 2010

В обработчике this является элементом DOM. Поэтому, чтобы получить тег, просто используйте свойство tagName. Кроме того, вы можете получить другие свойства, такие как ID с this.id.

alert( this.tagName );
alert( this.id );

Или, если вам нужно протестировать определенный селектор (я не уверен в вашем вопросе), вы можете использовать jQuery .is().

if( $(this).is('.someClass') {...

(На самом деле, в этом простом случае тестирования класса вы, вероятно, вместо этого использовали бы .hasClass().)

if( $(this).hasClass('someClass') {...

Могут быть более эффективные способы. Зависит от того, что вы действительно должны проверить.


РЕДАКТИРОВАТЬ: Из вашего комментария вы хотите проверить, имеет ли дочерний элемент <a> класс rpSelected.

Попробуйте это:

if( $(this).children('a.rpSelected').length == 0 ) {
       // remove the class
0 голосов
/ 28 сентября 2010

Если вы просто хотите выполнить условные операторы по имени тега, представленному ключевым словом this , вы можете добиться этого с помощью следующего кода.

if ( $(this).is('li') ) {
    ...
} else if ( $(this).is('ul') ) {
    ...
} else if ( $(this).is('a') ) {
    ...
}

Помните, что ключевое слово this относится к "владельцу" функции, которую мы выполняем . Таким образом, вы должны быть уверены, кто вызывает функцию ...

0 голосов
/ 28 сентября 2010

То, что вы можете использовать для просмотра всех атрибутов, - это функция, аналогичная PHP-функции print_r:

function print_r(theObj){
  if(theObj.constructor == Array ||
     theObj.constructor == Object){
    document.write("<ul>")
    for(var p in theObj){
      if(theObj[p].constructor == Array||
         theObj[p].constructor == Object){
document.write("<li>["+p+"] => "+typeof(theObj)+"</li>");
        document.write("<ul>")
        print_r(theObj[p]);
        document.write("</ul>")
      } else {
document.write("<li>["+p+"] => "+theObj[p]+"</li>");
      }
    }
    document.write("</ul>")
  }
}

А для вывода просто используйте print_r($(this));

0 голосов
/ 28 сентября 2010

Если вы хотите проверить текущий объект и его значения, напишите этот console.log (this);и откройте консоль firebug>.

0 голосов
/ 28 сентября 2010

Чтобы получить первый элемент из объекта jQuery, используйте indexer :

var val = $(this);
...
var domElement = val[0]; //domElement == this (from above)

Чтобы получить HTML:

var val = $(this);
...
var html = val[0].html();

Редактировать:
Читая ваш комментарий, вы ищете класс внутри элемента <li>?

var isSelected = $(this).find('a.rpSelected').length > 0;
...