2010-11-14 4 views
1

У меня есть куча ссылок с предварительно не детерминированных идентификаторами, как так:Как получить идентификатор элемента на кнопку мыши в MooTools (1.1)

<a href="#" class="remove_pid" id="pid_123">Remove 123</a> 
<a href="#" class="remove_pid" id="pid_234">Remove 234</a> 
<a href="#" class="remove_pid" id="pid_567">Remove 567</a> 
<a href="#" class="remove_pid" id="pid_890">Remove 890</a> 

У меня есть обработчик событий, как так :

$$('.remove_pid').addEvents({ 
    'click': removePid 
}); 

, который вызывает эту функцию

function removePid(event) 
{ 
    alert('yo what is my element id???'); 
} 

Так что вопрос в том, как я получаю идентификатор элемента в функции removePid() ?

UPDATE:

@Aishwar, event.target.id, кажется, работает в следующих случаях, но не конкретно в моем случае

<a href="#" class="remove_pid"><img src="/123.jpg" id="pid_123"></a> 

UPDATE 2:

Я думал, что это несущественно, но вместо текста «Удалить 123» у меня действительно есть изображение:

<a href="#" class="remove_pid" id="pid_123"><img src="/123.jpg"></a> 

Итак, спасибо за @Dimitra за указание на это. Я был удивлен проголосованием, но рад сказать, что, вероятно, заслуживаю этого.

+0

согласно обновленной разметке, event.target.getFirst(). GetProperty («id») –

+0

@Dimitar Вы должны добавить свое решение в качестве ответа. Однако это не сработало. – denormalizer

+0

Какой элемент вы добавляете в событие click? это 3-я замена разметки, которую вы делаете ... сделайте свой разум или сделайте пример www.jsfiddle.net! неудивительно, что он получил downvoted –

ответ

0

Думаю, что я нашел:

function removePid(event) 
{ 
    //alert('yo what is my element id???'); 
    $(event.target).getParent('a').getProperty('id'); 
} 

Это работает в FF 3,6

+0

, которое не связано с вашей разметкой. –

+0

Правильно. На самом деле у меня есть изображение внутри тега ссылки вместо текста. Изменения, внесенные в обновление 2. – denormalizer

1

У меня нет опыта работы с mootools. Но я думаю, вы можете просто сделать что-то вдоль этих линий, в removePid:

var element = event.srcElement || event.target 
element.id // is the element's id, element is the DOM element itself 
+0

Спасибо за ваш ответ. PLease см. Мое обновление – denormalizer

1

согласно разметке, публикуемую в ОКОНЧАТЕЛЬНЫЙ обновление:

http://www.jsfiddle.net/dimitar/Sr8LC/

$$('.remove_pid').addEvents({ 
    'click': function(e) { 
     new Event(e).stop(); 
     var id = this.getProperty("id"); 
     alert(id); 
     alert(id.replace("pid_", "")); 
    } 
}); 

использовать указанную функцию и сохранить событие:

var removeProduct = function(e) { 
    new Event(e).stop(); 
    var id = this.getProperty("id"); 
    alert(id); 
    alert(id.replace("pid_", "")); 
}; 

$$('a.remove_pid').each(function(el) { 
    el.addEvents({ 
     'click': removeProduct.bind(el) 
    }); 
}); 

в обеих функциях this будет относиться к спусковому элементу (якорь), так что вы можете прочитать это свойство и т.д. this.getFirst() будет ссылаться на изображении (если вы хотите).

+0

Спасибо за ваш ответ. Ваше решение, похоже, работает в jsfiddle за счет перезаписи всего моего кода. Насколько я понимаю, вы приложили немало усилий для того, чтобы сделать этот кросс-браузер совместимым, но мой один лайнер отлично работает и денди. Заявления для первоначальной путаницы. – denormalizer

Смежные вопросы