JQuery: получить имя объекта? - PullRequest
8 голосов
/ 02 апреля 2011

Я пытаюсь получить имя объекта, по которому щелкнули, с помощью приведенного ниже кода, но я получаю только [объектный объект], как я могу получить имя объекта?

<a href="#" class="clickme">click</a>

    $('.clickme').click(function(){
      alert($(this));
      return false;
    });

Я хочу получить '.clickme' как имя моего объекта.

Спасибо.

РЕДАКТИРОВАТЬ:

спасибо за помощь, ребята.извините, что не ясно.

Я хочу получить имя объекта динамически, когда я превращаю этот jquery click () в пользовательскую функцию или плагин.*

Я хотел бы получить '.clickme' в качестве имени моего объекта.

и,

<a href="#" id="clickme">click</a>

        $('#clickme').click(function(){
          alert($(this));
          return false;
        });

Я хотел бы получить '#clickme' в качестве имени моего объекта.

поэтому вы замечаете, что иногда я хочу получить имя идентификатора, но иногда я хочу получить имя класса в качестве имени объекта.

Ответы [ 5 ]

8 голосов
/ 02 апреля 2011

jQuery имеет внутреннее свойство selector, которое можно использовать для поиска того, что вы ищете:

$('.clickme').selector == '.clickme';
$('.clickme').find('a').selector == '.clickme a';

Однако вы не можете получить доступ к этому в click(function(e){}), так как вы должны повторно выбрать, используя this:

$('.clickme').click(function(e){
  alert($(this).selector); // alerts nothing
});

Однако, когда вы создаете функцию щелчка, вы можете присвоить этот элемент переменной и ссылаться на него в пределах:

var $cm = $('.clickme').click(function(e){
  alert($cm.selector); // alerts '.clickme'
});
3 голосов
/ 19 июля 2012

Это не отвечает на точный вопрос, но на тот, который я получил, когда доберусь туда - так что вы тоже возможно; -)

Краткий ответ: используйте " this.name ", которое совпадает с "$ (this) .attr ('name')"

Пример:

$("*").click(function (event) {
   event.stopPropagation();
   // Display the name of the clicked object
   $(this).after("<span> " + this.name +" clicked! </span>");
   // Change the name for what you want (optional - just to show it's doable)
   this.name = this.name + "X";
});
3 голосов
/ 02 апреля 2011

Это класс. Не имя объекта и, конечно, ничего уникального.

Вы можете получить его, используя this.className или $(this).attr('class').

Если вам нужно нечто уникальное, используйте атрибут id и замените class на id.

1 голос
/ 02 апреля 2011

альтернатива с использованием объекта события

$('.clickme').click(function(e){
  alert($(e.target).attr('class'));
  return false;
});
1 голос
/ 02 апреля 2011

Имя или идентификатор?

 $('.clickme').click(function(){
  alert( this.id );  // or $(this).attr('name') if you want the name
  return false;
});

Что действительно похоже на то, что вам нужен класс (хотя я не уверен, почему, поскольку вы использовали класс в качестве селектора).

 $('.clickme').click(function(){
  alert( $(this).attr('class') );
  return false;
});
...