jquery on()代理上下文意外

时间:2014-02-24 10:13:51

标签: jquery proxy

这是我的代码,基本上,当点击tags_delete时,我想访问父div的id。不知何故,上下文没有被提起。我已经阅读了$ .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) )
        );

2 个答案:

答案 0 :(得分:1)

问题是因为你使用了$.proxy(),处理程序内的this没有引用被点击的元素,所以你可以使用event.currentTarget属性来引用当前的目标元素并使用parent()访问其ID

$("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));

演示:Fiddle

答案 1 :(得分:0)

如果您想获取父ID,请使用parent()功能 Here my fiddle example

$(document).ready(function()
   {
       $("a.tags_delete").on("click",function(){         
           alert($(this).parent().attr('id'));
        });
 });