Я немного смущен "этим" в функциях.
Почему я не получаю 'spanID' как идентификатор элемента, на который я нажал?
HTML
<span id="spanID" onclick="alertIt()">something</span>
JS
function alertIt(){
alert($(this).attr("id"))
}
вот JSfiddle
добавьте this
в функцию alertIt()
<span id="spanID" onclick="alertIt(this)">something</span>
Я не включаю вызов функции внутри тега span,
Я просто:
<span id="spanID">something</span>
$(document).ready(function(){
$("#spanID").click(function(){
alert($(this).attr("id"));
});
});
this
селектор просто получить элемент он вложен в примере.:
$("#example").click(function(){
$(this).fadeOut(500);
});
В вашем коде не было элемента, вложенного в this
селектор.
Поскольку при создании встроенного обработчика событий вы создаете анонимную функцию:
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);
}
Используйте следующие
$("span").on("click",function(){
alert($(this).attr("id"));
})
рабочая скрипка Fiddle
HTML
<span id="spanID" onclick="alertIt($(this))">something</span>
Javascript
function alertIt(obj){
alert($(obj).attr("id"))
}
Вы столкнулись с проблемой, потому что $(this)
внутри вашей функции относится к объекту window. Вы должны передать this
внутри onclick="alertIt(this)"
like:
<span id="spanID" onclick="alertIt(this)">something</span>
function alertIt(a){
console.log(a.id);
}
или
Вы должны использовать .click()
jquery .click()
например:
<span id="spanID">something</span>
$("span").click(function(){
alert($(this).attr("id"));
});