1

私はかなり単純なコードをいくつか持っています。残念ながら、そのコードの一番下にはハードコードされた jQuery セレクターを含むコールバックがあり、それらを引き出す方法を見つけたいと思っています。

この演習では、次のことを前提とします。

  • .text-shows-up-here は、テキストが表示される場所です
  • .user-types-here は、ユーザーが実際にテキストを入力する場所です

シンプルです。ユーザーがどこかに入力すると、テキストが別の場所に複製されます。これがコードです。

class TextChanger
  constructor: (@selector) ->
    events = ['change', 'keydown', 'keyup', 'keypress']
    @bind(event) for event in events

  update_text: ->
    $('.text-shows-up-here').text $('.user-types-here').val()

  bind: (event) ->
    @selector.on(event, @update_text)

window.Try ?= {}
window.Try.textChanger ?= TextChanger

一方、Javascript の世界では...

    var textChanger = new Try.textChanger($('.user-types-here'));

これらの 2 つのハードコーディングされたセレクターを「バインド」関数でこのコールバックから取り出すことができるかどうか、またはその方法を知りたいです。

  bind: (event) ->
    @selector.on(event, @update_text)
4

2 に答える 2

1

あなたはすでに.user-types-here;を注入しています。もう一方も注入し、jQuery セレクターの代わりにそれらのオブジェクトを使用します。

constructor: (options) ->
  @source = options.source
  @target = options.target
  ...

update_text: ->
  @target.text @source.val()

純粋な JavaScript 側では、それらを送信するだけです。

var textChanger = new Try.textChanger({ 
                                        source: $('.user-types-here'), 
                                        destination: $('.text-shows-up-here')
                                     });
于 2013-06-16T02:37:46.617 に答える