0

backbone.js を使用して単純なビューを作成しました。

class MyApp.Views.Tools.TextBox extends Backbone.View
  template: JST['pdfs/tools/text_box']

  tagName: "div"

  className: "resizable"

  id: "resizable"

  events:
    'click .close': 'closeRect'

  initialize: ->
    @

  render: ->
    $(@el).html(@template())
    @initDraggable()
    this

  initDraggable: ->
    $(@el).resizable().draggable();
    #$(@el).css({"position": "absolute"})
    @

  closeRect: (event) =>
    console.log "pass"

そして私のテンプレート:

<div class="close">x</div>
<input type="text" name="text_' + @count++ + '" />

$(@el).resizable().draggable(); という行を実行すると、jQuery は style="position:relative" を要素に追加します。jQuery UI で Draggable 関数を見ると、その理由がわかります。

if (this.options.helper == 'original' && !(/^(?:r|a|f)/).test(this.element.css("position")))
this.element[0].style.position = 'relative';

しかし、なぜ this.element.css("position") が要素の css プロパティを返さないのか理解できません: position:absolute.

Backbone.js が css の前に javascript をロードする可能性はありますか、それとも私のページの css を使用しませんか?

4

1 に答える 1

0

しかし、なぜ this.element.css("position") が要素の css プロパティを返さないのか理解できません: position:absolute.

よくわかりません; あなたが指摘したように、jQuery draggable はposition: relativeその要素にスタイルを追加します。次に、それを"position": "absolute"... に戻しましたが、コメントアウトしました。

#$(@el).css({"position": "absolute"})

だから、それがまだ残っている理由relativeは、jQueryがそれを変更しrelative、あなたがそれを元に戻さなかったからだと思われます.

于 2013-01-06T18:10:28.270 に答える