【问题标题】:backbone and twitter-bootstrap popover骨干网和 twitter-bootstrap 弹出框
【发布时间】:2012-10-19 22:14:01
【问题描述】:

这是一个与Backbone not binding events to jQuery Popover 非常相似的问题 - 但答案似乎不符合我的需求。

我希望将(twitter bootstrap)弹出框绑定到我的一个视图,但不确定我应该怎么做?

events : {      
    "hover .info" : "showDetails",      
},
render : function(){        
    var content = this.template.tmpl(this.model.toJSON());
    $(this.el).html(content);       
    return this;
},
showDetails : function() {

    this.$(".info").popover({title: 'Hello', content: 'World'});    
    this.$(".info").popover('show');        
    console.log(this.model.get('description'));
},

我的模板看起来像

<script type="text/template" id="item-template">
  <div class="well listitem" style="padding: 14px 19px;">
    <div class="row show-grid" title="Irregular three column layout">
      <div class="span6">${heading}</div>
      <div class="span1">${price}</div>
      <div class="span1"><button class="btn info">Details</button></div>        
    </div>
  </div>
</script>

所以我试图在鼠标进入按钮时在弹出窗口中显示一些文本,并在鼠标离开时消失 - 但是在鼠标悬停时

  1. 弹出框显示为未定义的标题
  2. 鼠标移出时它保持在原位。

我认为我没有正确绑定,但如果有人能看到我的错误,那就太好了。

【问题讨论】:

    标签: backbone.js twitter-bootstrap


    【解决方案1】:

    问题在于 Jquery hover 事件需要两个回调函数,一个用于mouseenter,一个用于mouseleave。在您的情况下,您只传递一个将调用 mouseenter 并打开弹出框的函数。来自jquery docs

    调用 $(selector).hover(handlerIn, handlerOut) 是以下的简写: $(selector).mouseenter(handlerIn).mouseleave(handlerOut);

    因此,像这样更改您的代码将解决您的第二个问题:

    events : {      
        "mouseenter .info" : "showDetails", 
        "mouseleave .info" : "hideDetails"     
    },
    render : function(){        
        var content = this.template.tmpl(this.model.toJSON());
        $(this.el).html(content);       
        return this;
    },
    showDetails : function() {
    
        this.$(".info").popover({title: 'Hello', content: 'World'});    
        this.$(".info").popover('show');        
        console.log(this.model.get('description'));
    },
    hideDetails : function() {
        this.$(".info").popover('hide');   
    },
    

    【讨论】:

    • 谢谢 - 辛苦了。对于任何做类似事情的人来说,仅供参考,标题和内容应该是函数而不是文本,例如popover({title : function() { return 'Hello'}});
    猜你喜欢
    • 2013-01-22
    • 2013-10-30
    • 1970-01-01
    • 2012-08-21
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多