JQuery не может получить идентификатор элемента с «этим»

0

Я немного смущен "этим" в функциях.

Почему я не получаю 'spanID' как идентификатор элемента, на который я нажал?

HTML

<span id="spanID" onclick="alertIt()">something</span>

JS

function alertIt(){
    alert($(this).attr("id"))
}

вот JSfiddle

  • 0
    Потому что $ (this) в вашей функции относится к объекту окна, у которого нет идентификатора.
Теги:
this

7 ответов

1

добавьте this в функцию alertIt()

<span id="spanID" onclick="alertIt(this)">something</span>
1

Я не включаю вызов функции внутри тега span,

Я просто:

<span id="spanID">something</span>

$(document).ready(function(){
    $("#spanID").click(function(){
        alert($(this).attr("id"));
    });
});
  • 0
    Это то, что я бы сделал так же.
0

this селектор просто получить элемент он вложен в примере.:

$("#example").click(function(){
   $(this).fadeOut(500);
});

В вашем коде не было элемента, вложенного в this селектор.

0

Поскольку при создании встроенного обработчика событий вы создаете анонимную функцию:

onclick="alertIt()"

как:

function() {
    alertIt();
}

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

$('#spanID').click(function() {
    alertIt();
});

Анонимная функция имеет правильный контекст, но контекст не будет передаваться другим функциям, если вы не сделаете это явно:

onclick="alertIt(this)"

или

$('#spanID').click(function() {
    alertIt(this);
});

а также

function alertIt(obj) {
    alert(obj);
}

onclick="alertIt.call(this)"

или

$('#spanID').click(function() {
    alertIt.call(this);
});

а также

function alertIt() {
    alert(this);
}
0

Используйте следующие

$("span").on("click",function(){
    alert($(this).attr("id"));
})

рабочая скрипка Fiddle

0

HTML

 <span id="spanID" onclick="alertIt($(this))">something</span>

Javascript

function alertIt(obj){
 alert($(obj).attr("id"))
}

jsfiddle

0

Вы столкнулись с проблемой, потому что $(this) внутри вашей функции относится к объекту window. Вы должны передать this внутри onclick="alertIt(this)" like:

<span id="spanID" onclick="alertIt(this)">something</span>
function alertIt(a){
    console.log(a.id);
}

DEMO

или

Вы должны использовать .click() jquery .click() например:

<span id="spanID">something</span>
$("span").click(function(){
    alert($(this).attr("id"));
});

DEMO

Ещё вопросы

Сообщество Overcoder
Наверх
Меню