当使用AJAX创建元素时,如何不显眼地将函数绑定到元素的单击

时间:2012-04-05 22:43:08

标签: javascript jquery ajax coffeescript

我的应用程序中有一个嵌套表单,它使用AJAX加载其他字段集。其中一个字段是我要隐藏的文件上传,并有效地替换为文本字段以粘贴Youtube链接。它适用于第一组字段,但由于函数绑定在document.ready上,因此它不适用于新的AJAX字段。我需要以其他方式绑定它。怎么办?

$ ->
  $(".foo").click ->
    $(this).css "display", "none"
更新:我没有运气,所以我去阅读了jQuery .on() documentation,它让我想起了Fresheyeball关于将它绑定到父div的内容。在那之后,它完美地运作。谢谢你的好建议!

$ ->
  $("#create").on "click", ".foo", ->
    $(this).css display : "none"

1 个答案:

答案 0 :(得分:3)

新的jQuery .on应该适合你:

$(document).ready ->
   $(window).on 'click', '.multiswitchr', ->
      that = $(this)
      that.css display : 'none'
      that.closest(".fields").find(".f-upload").first().css          display : "none"
      that.closest(".fields").find(".attachment-holder").first().css display : "none"
      that.closest(".fields").find(".youtube-link").first().css      display : "inline"

这项工作的方式是将监听器绑定到window(或者您可以使用直接父级)来监听.multiswitchr的存在并将'click'事件绑定到它。

P.S。在coffeescript中,文档准备的简写只是$ ->