Как определить id элемента, по которому произошел клик?
Сразу извиняюсь если вопрос глупый.
Суть такая, есть несколько элементов, например span, с одинаковыми атрибутами class и разными id, причем все это дело формируется динамически: <span class="navigatorItem" id="id_0"></span> <span class="navigatorItem" id="id_1"></span> <span class="navigatorItem" id="id_2"></span> Мне надо зная класс поймать id, нашел множество вариантов, но не один работать не стал, например такое решение:
$('.navigatorItem').live('click', function() {
var id_click = console.log(event.target.id);
alert(id_click);
});
Вернуло: undefined Может, кто знает как, заранее спасибо) |
а если так
$('.navigatorItem').live('click', function(e) {
var id_click = e.target.id;
alert(id_click);
});
|
<style>
span{border:1px solid red;padding:0 30px}
</style>
</head>
<body>
<div id="tar">
<span class="navigatorItem" id="id_0"></span>
<span class="navigatorItem" id="id_1"></span>
<span class="navigatorItem" id="id_2"></span>
</div>
<script>
document.getElementById('tar').onclick=function fn(e){
e = e || event
var target = e.target || e.srcElement
alert('click:'+target.id)
}
</script>
http://learn.javascript.ru/bubbling-and-capturing |
<script type="text/javascript" src="http://yandex.st/jquery/1.7.2/jquery.min.js"></script>
<span class="navigatorItem" id="id_0">aaa</span>
<span class="navigatorItem" id="id_1">bbb</span>
<span class="navigatorItem" id="id_2">ccc</span>
<script type="text/javascript">
$('.navigatorItem').live('click', function() {
alert($(this).attr("id"));
});
</script>
|
с версии JQuery 1.7 вместо live нужно использовать on
|
vadim5june, bot87, Deff большое спасибо, все работает))
Magneto спасибо, но есть проблема, у меня этот скрипт должен несколько раз повторяться на странице, если использовать “on”, то последний из повторов не работает и к тому же если вручную прописать например вот так:
//navId = "id",
$('#'+ options.navId+'_0').on('click',function(){
//не работает
});
работать не будет, в отличие от live. |
Цитата:
в данном случае:
//navId = "id",
$(document.body).on('click', '#'+ options.navId+'_0', function(){
// оливье
});
|
2melky, большое спасибо)
|
Чтобы не создавать новую тему еще один глупый вопрос, как правильно писать функции в jquery скриптах, обычно я писал вот так:
function someFunction () {
//Работает
}
И не обращал внимания, но тут ковыряя разный чужой код, натолкнулся вот на такую запись:
someFunction = function () {
//Не работает с несколькими вызовами
}
Она работает, только если я вызываю скрипт на странице один раз, если использую несколько раз, работает только последний вызов. А вот так опять все нормально:
var someFunction = function () {
//Работает
}
Буду очень благодарен, если кто-нибудь объяснит) |
| Часовой пояс GMT +3, время: 03:38. |