Как определить 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, время: 16:03. |