【发布时间】:2013-10-22 15:53:47
【问题描述】:
我有一个文本框,当我按下回车键时动态添加一个元素,另一个在我单击删除按钮时删除元素。 delete 方法适用于任何现有元素,但不适用于任何动态插入的元素。
代码如下:
$ ->
# AJAX to add a new stock
$("#add-symbol").keypress (e) ->
if e.which == 13
url = $(this).data('url')
name = $(this).val()
$.ajax
url: url
type: "POST"
data: {
user_id: $('#info').data('user-id'),
name: name
}
success: (response) ->
if response.status == 200
new_element = '<a class="item" data-path="' + response.path + '" data-stock="' + response.symbol + '">'+ response.symbol + '<i class="icon remove"></i></a>'
$('#symbols').append(new_element)
$('#add-symbol').val('')
else
#deal with errors
# AJAX to delete stocks
$('.icon.remove').on('click', (e) ->
console.log('click click')
$parent = $($(this).parent().get(0))
stock = $parent.data('stock')
user_id = $("#info").data('user-id')
url = $parent.data('path')
$.ajax
url: url
type: "DELETE"
data: {
user_id: user_id,
name: stock
}
success: (response) ->
if response.status == 200
$parent.remove()
else
# deal with errors
)
有什么想法吗?根据我的阅读,.on() 应该解决将点击事件绑定到动态生成的元素的问题,但它似乎不起作用。
【问题讨论】:
-
on如果使用得当,应该可以解决问题,即使用事件委托语法。$(container).on('çlick', '.icon.remove', function(){...其中 container 是容器选择器,它包含这些元素并且随时可用。 -
@PSL 也试过了,没有骰子
-
@PSL 没关系,我之前把我的容器搞砸了。这完美无缺。干杯!
-
告诉我你的语法看起来不像那样!
-
@PHPglue 哎呀,我应该提到它是咖啡脚本
标签: javascript jquery ruby-on-rails coffeescript