2014-12-01 85 views
1

后,我有一个简单的脚本,应该删除Ajax调用后一个div是成功的:删除DIV阿贾克斯成功

$ -> 
$('body').on 'click', '.add-comment', (event) -> 
    event.preventDefault() 
    body = $('#body_comment') 
    target = event.target 

    $.ajax 
    method: 'POST' 
    url: '/comments/create' 
    data: 
    body: body 
    success: (data) -> 
    target.remove() 
    error: (data) -> 
    # nothing here 

如果我做的:

console.log(target) 

在成功块,它展示正确的html div,但是当我做target.remove()或target.hide()时没有任何反应

我在哪里错了?

PS:我也尝试过使用$(目标)一个.remove(),但没有成功.. 新代码:

$('body').on 'click', '.add-comment', (event) -> 
    event.preventDefault() 
    body = $('#body_comment') 
    target = event.target 

    $.ajax 
    method: 'POST' 
    url: '/comments/create' 
    data: 
    body: body 
    success: (data) -> 
    $(target).remove() 
    error: (data) -> 
    # nothing here 

PPS:OK,我发现这是一个冲突另一个地雷剧本......对不起家伙!

+0

的是,在你的CoffeeScript真正的缩进? – 2014-12-01 19:53:03

+0

@ muistooshort我也注意到了,但是OP提供了他的真实代码gist https://gist.github.com/anonymous/92020cf606c85b14e843 – dfsq 2014-12-01 19:53:52

+0

@dfsq:(1)这真的应该嵌入到问题中。 (2)注意那里没有'var target'?无论是JavaScript还是来自CoffeeScript或者仍然缺少代码。 – 2014-12-01 19:56:44

回答

1

应该

$(target).remove(); 

event.target是一个DOMElement。为了使用jQuery方法,您应该将其转换为jQuery instance,但将其封装到$函数中。

+0

试过但不是运气:( – Riccardo 2014-12-01 19:38:19

+0

好吧,这很奇怪,你确定你的代码缩进是正确的吗?我可以看到'成功:(data) - >'应该在它前面有一个空格。检查它? – dfsq 2014-12-01 19:42:46

+0

你的初始点是正确的(使用$(目标)而不是只有target.remove()),然后还有一个与地雷脚本冲突...对不起,时间丢失!谢谢。 – Riccardo 2014-12-01 19:58:12

0

删除是一个jQuery的功能,所以你必须调用它像这样:

$(target).remove(); 

UPDATE

event.target是指元素。新增注释里面点击。

试试这个:

target = $(this); 

success: (data) -> 
target.remove() 
+0

试过没有运气:(我已经更新了这个问题。 – Riccardo 2014-12-01 19:40:33

+0

回答编辑试试吧 – 2014-12-01 19:46:28

+0

你的初步答案是正确的:)问题是我的脚本冲突...抱歉,谢谢。 – Riccardo 2014-12-01 19:58:59