【问题标题】:Delete div after ajax successajax成功后删除div
【发布时间】:2015-01-29 21:28:57
【问题描述】:

我有一个简单的脚本,应该在 ajax 调用成功后删除一个 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:我也尝试过使用 $(target).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:好的,我发现这与另一个我的脚本有冲突……对不起,伙计们!

【问题讨论】:

  • 这是你 CoffeeScript 中真正的缩进吗?
  • @muistooshort 我也注意到了,但是 OP 提供了他的真实代码要点gist.github.com/anonymous/92020cf606c85b14e843
  • @dfsq:(1)这确实应该嵌入问题中。 (2) 注意里面没有var target?要么 JavaScript 不是来自 CoffeeScript,要么仍然缺少代码。

标签: javascript jquery html ajax coffeescript


【解决方案1】:

应该是

$(target).remove();

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

【讨论】:

  • 试过但不走运:(
  • 好吧,这很奇怪。你确定你的代码缩进是正确的吗?我可以看到success: (data) -> 前面应该多留一个空间。可以查一下吗?
  • 您的初始点是正确的(使用 $(target) 而不是仅 target.remove())。然后还和我的剧本发生了冲突……抱歉耽误了时间!谢谢。
  • 没问题,很高兴你终于弄明白了!
【解决方案2】:

Remove 是一个 jquery 函数,所以你必须这样称呼它:

$(target).remove();

更新

event.target 指的是在 .add-comment 中点击的元素。

试试这个:

target = $(this);

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

【讨论】:

  • 您最初的回答是正确的 :) 问题是我的脚本冲突...对不起!谢谢。
猜你喜欢
  • 2019-02-12
  • 1970-01-01
  • 1970-01-01
  • 2014-11-28
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多