0

アプリにネストされたフォームがあり、AJAXを使用して追加のフィールドセットを読み込みます。それらのフィールドの1つは、非表示にして、Youtubeリンクを貼り付けるためのテキストフィールドに効果的に置き換えたいファイルアップロードです。これは最初のフィールドセットに対しては機能しますが、関数はdocument.readyにバインドされているため、新しいAJAXフィールドに対しては機能しません。別の方法でバインドする必要があります。何をしますか?

$ ->
  $(".foo").click ->
    $(this).css "display", "none"

更新:運が悪かったので、jQuery .on()のドキュメントを読みに行きました。それは、Fresheyeballが親divにバインドすることについて言ったことを思い出させました。その後、それは完全に機能しました。素晴らしいアドバイスをありがとう!

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

1 に答える 1

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'

PS in coffeescript のドキュメント準備完了の省略形は$ ->

于 2012-04-05T22:50:39.797 に答える