Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.08.2012, 05:27
Интересующийся
Отправить личное сообщение для Broken Посмотреть профиль Найти все сообщения от Broken
 
Регистрация: 19.08.2012
Сообщений: 17

Как определить 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

Может, кто знает как, заранее спасибо)
Ответить с цитированием
  #2 (permalink)  
Старый 19.08.2012, 08:38
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

а если так
$('.navigatorItem').live('click', function(e) {
         var id_click =   e.target.id;
         alert(id_click);
        });
Ответить с цитированием
  #3 (permalink)  
Старый 19.08.2012, 09:31
Профессор
Отправить личное сообщение для bot87 Посмотреть профиль Найти все сообщения от bot87
 
Регистрация: 16.05.2011
Сообщений: 307

<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
__________________
Я только учусь.Ногами просьба не бить
Ответить с цитированием
  #4 (permalink)  
Старый 19.08.2012, 10:18
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<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>
Ответить с цитированием
  #5 (permalink)  
Старый 19.08.2012, 12:54
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

с версии JQuery 1.7 вместо live нужно использовать on
Ответить с цитированием
  #6 (permalink)  
Старый 19.08.2012, 16:43
Интересующийся
Отправить личное сообщение для Broken Посмотреть профиль Найти все сообщения от Broken
 
Регистрация: 19.08.2012
Сообщений: 17

vadim5june, bot87, Deff большое спасибо, все работает))


Magneto спасибо, но есть проблема, у меня этот скрипт должен несколько раз повторяться на странице, если использовать “on”, то последний из повторов не работает и к тому же если вручную прописать например вот так:

//navId = "id",
$('#'+ options.navId+'_0').on('click',function(){
     //не работает
  });


работать не будет, в отличие от live.

Последний раз редактировалось Broken, 19.08.2012 в 16:51.
Ответить с цитированием
  #7 (permalink)  
Старый 19.08.2012, 17:30
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Broken Посмотреть сообщение
vadim5june, bot87, Deff большое спасибо, все работает))


Magneto спасибо, но есть проблема, у меня этот скрипт должен несколько раз повторяться на странице, если использовать “on”, то последний из повторов не работает и к тому же если вручную прописать например вот так:

//navId = "id",
$('#'+ options.navId+'_0').on('click',function(){
     //не работает
  });


работать не будет, в отличие от live.
Вы не поняли, live в JQ 1.7 вызывает on. зачем Вам один бесполезный вызов в виде live?

в данном случае:
//navId = "id",
$(document.body).on('click', '#'+ options.navId+'_0', function(){
     // оливье
});
Ответить с цитированием
  #8 (permalink)  
Старый 19.08.2012, 18:16
Интересующийся
Отправить личное сообщение для Broken Посмотреть профиль Найти все сообщения от Broken
 
Регистрация: 19.08.2012
Сообщений: 17

2melky, большое спасибо)
Ответить с цитированием
  #9 (permalink)  
Старый 20.08.2012, 05:09
Интересующийся
Отправить личное сообщение для Broken Посмотреть профиль Найти все сообщения от Broken
 
Регистрация: 19.08.2012
Сообщений: 17

Чтобы не создавать новую тему еще один глупый вопрос, как правильно писать функции в jquery скриптах, обычно я писал вот так:
function someFunction () {
	 //Работает
	}

И не обращал внимания, но тут ковыряя разный чужой код, натолкнулся вот на такую запись:
someFunction = function () {
	 //Не работает с несколькими вызовами
	}

Она работает, только если я вызываю скрипт на странице один раз, если использую несколько раз, работает только последний вызов.

А вот так опять все нормально:
var someFunction = function () {
	 //Работает
	}

Буду очень благодарен, если кто-нибудь объяснит)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить активное окно/вкладку? Chameleon Events/DOM/Window 5 19.03.2012 08:59
Как привязаться к порядковому номеру элемента? Dudo4nick jQuery 6 08.02.2012 05:39
Как менять позицию элемента? Заданую через position:absolute; left:100px; top:200px; aRpi Общие вопросы Javascript 3 24.04.2011 08:42
как определить шрифты scuter Общие вопросы Javascript 9 19.05.2008 14:32
как определить позицию элемента относительно окна scuter Events/DOM/Window 5 07.05.2008 18:47