2014-02-24 17 views
0

這是我的代碼,基本上,當點擊tags_delete時我想訪問父div的id。不知怎的,上下文沒有被拾起。我已閱讀$ .proxy的示例,但無法使其正常工作。jquery on()代理上下文意外

<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)) 
     ); 

回答

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)); 

演示:Fiddle

+0

這工作阿倫,謝謝!其他貢獻也感謝,但必須使用代理,因爲對象設置。 – Bart

+0

@Bart下次提供您在其中設置您的代碼的上下文,在問題... –

+0

我會,缺乏信息的道歉 – Bart

0

如果你想獲得父ID只使用parent()功能 Here my fiddle example

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

'this.deleteTag(imageId)'? –