jQuery添加一个位置:使用backbone.js相对于我的元素

时间:2012-08-22 07:16:30

标签: backbone.js

我遇到了一个奇怪的问题,我使用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?

1 个答案:

答案 0 :(得分:0)

  

但我不明白为什么this.element.css(“position”)不会在元素上返回我的css属性:position:absolute。

我很困惑;正如你所指出的那样,jQuery draggable为其元素添加了position: relative样式。然后,您已将其设置回"position": "absolute" ...但您已将其评论出来。

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

所以,似乎它仍然relative的原因是jQuery将其更改为relative并且您从未将其更改回来。