jquery on () Контекст прокси неожидан

0

Этот мой код, в основном, когда click_delete нажата, я хотел бы получить доступ к id родительского div. Каким-то образом контекст не подбирается. Я прочитал примеры $.proxy, но не могу заставить его работать.

<div class="text">
<div id="894" class="tags">
<img height="24" src="image">
<a class="tags_delete"></a>
</div>
<input id="tag_list" type="text">
</div>

$("div.text").on("click", "a.tags_delete",          
                $.proxy(function(that){                     
                    var imageId = that.parent("div").prop("id");        
                    console.log(that); 
                    console.log( imageId );
                    this.deleteTag(imageId);
                }, this, $(this) )
        );
Теги:
proxy

2 ответа

1
Лучший ответ

Проблема в том, что вы использовали $.proxy(), this внутри обработчика не относится к элементу с кликом, поэтому вы можете использовать свойство event.currentTarget для ссылки на текущий целевой элемент и использовать parent() для доступа к его идентификатору

$("div.text").on("click", "a.tags_delete", $.proxy(function (e) {
    var imageId = $(e.currentTarget).parent().attr('id');
    console.log(that);
    console.log(imageId);
    this.deleteTag(imageId);
}, this));

Демо: скрипка

  • 0
    Это работает Арун, спасибо! Другие вклады тоже спасибо, но должны использовать прокси из-за настройки объекта.
  • 0
    @Bart в следующий раз предоставьте контекст, в котором вы устанавливаете свой код, под вопросом ...
Показать ещё 1 комментарий
0

Если вы хотите получить родительский идентификатор, просто используйте функцию parent() Здесь мой пример скрипки

$(document).ready(function()
   {
       $("a.tags_delete").on("click",function(){         
           alert($(this).parent().attr('id'));
        });
 });
  • 0
    что насчет this.deleteTag(imageId) ?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню