Вопрос по jquery, asp.net – jquery $ (this) .id return Не определено

26

У меня есть две кнопки-переключателя asp на странице, которые помещены вupdatepanel, Я написал для них событие click с помощью jQuery:

$(document).ready(function () {
    $(".inputs").click(function () {
         alert($(this).id);
    });
});

Но он возвращает Undefined. В чем проблема?

EDIT:

        alert(" or " + $(this).attr("id"));
alert(this.id);

Эти две строки возвращаютсяnull!

Всегда используйте console.log (); Это было бы намного проще. В вашем примере вы можете использовать: console.log (this); И он показывает все данные (id, className и т. Д.) Min2liz

Ваш Ответ

6   ответов
96

$(this) а такжеthis не одинаковы. Первый представляет объект jQuery, обернутый вокруг вашего элемента. Второе - это просто твоя стихия.id свойство существует для элемента, но не для объекта jQuery. Таким образом, у вас есть несколько вариантов:

Access the property on the element directly:

this.id

Access it from the jQuery object:

$(this).attr("id")

Pull the object out of jQuery:

$(this).get(0).id; // Or $(this)[0].id

Get the id from the event object:

When events are raised, for instance a click event, they carry important information and references around with them. In your code above, you have a click event. This event object has a reference to two items: currentTarget and target.

Using target, you can get the id of the element that raised the event. currentTarget would simply tell you which element the event is currently bubbling through. These are not always the same.

$("#button").on("click", function(e){ console.log( e.target.id ) });

Из всех них лучший вариант - просто получить к нему доступ напрямую изthis само по себе, если вы не участвуете в ряде вложенных событий, тогда может быть лучше использоватьevent объект каждого вложенного события (дать им все уникальные имена) для ссылки на элементы в более высоких или более низких областях.

@yeyo Но это более полезный, более элегантный и более полный ответ. В качестве опции # 4 он даже включает ответ, который указан в «правильном» ответе. ответ. ОП должен установить это на правильный ответ.
Почему это не правильный ответ?
Очевидно, это достаточно популярный вопрос о том, что это был результат поиска номер один, когда я гуглил «$ (this) .id in jquery». И ваш ответ был правильным и помог мне. Я пошел с методом .attr (), и он работал как шарм. Спасибо!
@Pier действительно, это лучший ответ, но не единственный, который является правильным.
6

demo http://jsfiddle.net/LYTbc/

это ссылка на элемент DOM, поэтому вы можете обернуть его напрямую.

attr апи:http://api.jquery.com/attr/

Метод .attr () получает значение атрибута только для первого элемента в соответствующем наборе.

приятного вам, ура!

code

$(document).ready(function () {
    $(".inputs").click(function () {
         alert(this.id);

        alert(" or " + $(this).attr("id"));

    });

}); & # X200B;

1

$ (this): Jquery objct, который упакован с Dom Element, вы также можете проверить этот ответэто против $ (это)

попробуй вот такАтр (), Получить значение атрибута для первого элемента в наборе соответствующих элементов.

$(document).ready(function () {
    $(".inputs").click(function () {
         alert(" or " + $(this).attr("id"));

    });
});
2

$(document).ready(function () {
var a = this.id;

alert (a);
});
29

$(function () {
    $(".inputs").click(function (e) {
         alert(e.target.id);
    });
});

НТН.

4

$(this) является объектом jQuery, который оборачивает элемент DOMthis и у объектов jQuery нетid свойства. Вы, вероятно, хотите простоthis.id чтобы получитьid атрибут выбранного элемента.

Похожие вопросы