2014-10-02 3 views
2

У меня есть страница, которая содержит следующие ссылки

<a id="21561" class="delete_item" href="#" name="baseMenu"> 
<img class="icons" src="../images/delete.gif"> 
</a> 

<a id="219350" class="delete_item" href="#" name="menuOptions"> 
<img class="icons" src="images/delete.gif"> 
</a> 

Единственная разница между 2 ссылок атрибут имя.

Вопрос, который я имею, это то, что эти ссылки впрыскивается в HTML-документ динамически через $.post() метод

Я пытаюсь получить имя атрибута, когда удаление ссылка была нажата, но это похоже, не работает, когда я использую его совместно с атрибутом $(this).

Может кто-нибудь, пожалуйста, помогите мне получить $(this) attr для ссылки .delete_item на событие click.

Любая помощь была бы действительно оценена. Заранее спасибо

$(document).on("click", $(".delete_item") , function(){ 


var test = $(".delete_item", this); 
console.log(test); 
return false; //We just want get the value for now 
no need to parse the rest of the code. We now it works 


//rest of the ajax code ....... 
) 
+0

Как использовать делегирование событий правильно объясняется в OFFICAL ** JQuery учебник ** : http://learn.jquery.com/events/event-delegation/. Я предлагаю вам взглянуть на него. –

ответ

1

Попробуйте

$(document).on("click", ".delete_item" , function(){ 

var that= $(this); 
console.log(that); 
return false; //We just want get the value for now 


}); 
+0

'var' должно быть названо чем-то другим, кроме' this'. Ключевое слово не может быть назначено или объявлено как локальная переменная. –

+0

вы можете попробовать console.log ($ (this)); только или в переменной define $ (this) –

+0

Хотя это верно, 'var this' по-прежнему является синтаксической ошибкой. –

2

Вам не нужно использовать вызов функции JQuery в делегированном определении событий, я думаю, что это корень проблемы. Как только вы исправите это, вы должны просто использовать $(this).

Пример:

$(document).on("click", ".delete_item" , function(){ 

var test = $(this); 
console.log(test); 
return false; //We just want get the value for now no need to parse the rest of the code. We now it works 

//rest of the ajax code ....... 
}); 
+0

Re * "jquery brackets" *: '$' - это просто функция, поэтому '$ (...)' является функцией вызов. Я понимаю, что вы говорите, но вы делаете это так, как jQuery более волшебно, чем на самом деле. –

+0

@FelixKling Да, я знаю, что я просто не мог придумать лучшего термина для этого, я изменю его. :) – Phaeze

+0

@Phaeze Wow. Не могу поверить, что я этого не понимал. Я удалил функцию jQuery, и она сработала. Большое спасибо. Я очень ценю это. – elrado88

0

Изменить вашу функцию, чтобы передать событие и получить его от:

$(document).on("click", ".delete_item", function(event){ 

    //Our target (this) 
    var target = event.target; 

    var test = $(".delete_item", target); 
    console.log(test); 
    return false; 
} 
+0

1) Вам нужно передать селектор в '.on', а не объект jQuery. 2) Все тесты для' event' и 'event.srcElement' не нужны, поскольку jQuery уже передает единый объект события обработчику. –

+1

@FelixKling спасибо, исправлено. –