【问题标题】:Bootstrap Popover + Meteor JS click eventBootstrap Popover + Meteor JS 点击事件
【发布时间】:2014-05-08 22:57:41
【问题描述】:

我正在尝试通过单击引导弹出窗口内的按钮来触发流星事件。但是,该事件没有被触发。

这是我的代码:

   <button name="newLetter" class="glyphicon glyphicon-plus newLetter" type="button" data-container="body" data-toggle="popover" data-placement="right"></button>
   <div id="popover-content" class="hide">
      <textarea></textarea>
      <button class='glyphicon glyphicon-ok btn btn-success btn-xs addNewLetter'></button>
   </div>
Template.templateName.events({
    'click .newLetter': function(e, t) {
        $(".newLetter").popover({
           html: true,
           title: 'New Letter',
           content: function() {
              return $("#popover-content").html();
           }
       });
    },
    'click .addNewLetter': function(e, t) {
        console.log('test');
    }
});

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript twitter-bootstrap meteor


    【解决方案1】:

    首先使用您的代码,这不会在第一次点击时显示弹出窗口。你应该做什么:

    Template.templateName.rendered = function() {
        $(".newLetter").popover({
            html: true,
            title: 'New Letter',
            content: function() {
                return $("#popover-content").html();
            }
        });
    }
    

    如果您使用调试器检查,您会看到每次单击 .newLetter 按钮时,引导程序都会获取 #popover-content 的内容并将其放入具有 .popover 类的新 div 中。如果您想了解如何在动态创建的元素上绑定事件,you should check this answer。 (解决方法是使用on()

    现在,对于正在发生的事情,Meteor 将点击事件绑定到 #popover-content 内的 .addNewLetter 上,而不是 div.popover 内动态创建的元素 .addNewLetter 上,这就是它不起作用的原因。我发现的一种解决方法:

    Template.templateName.rendered = function() {
        $(document).on('click', '.addNewLetter', function() {
            console.log('hey');
        });
    }
    

    【讨论】:

    • 非常感谢!伟大的!先生,祝您有美好的一天。
    • 一个问题:为什么我无法从弹出框的文本区域获取文本?我试过这样:var letterName = $('[name="letterName"]').val();。我总是得到一个空值。
    • 试试这个告诉我:var letterName = $('textarea[name="letterName"]')[1].val();
    • 不幸的是:TypeError: 'undefined' 不是函数。也许是因为我有多个文本区域?或者这是一个流星问题?谢谢美人。
    • 是的,检查您的 chrome 调试器,引导程序获取 #popover-content 中的内容并将其放入一个新的 div.popover 中(每次点击都会这样做)。因此,每次单击 .newLetter 都会获得一个新的文本区域。
    猜你喜欢
    • 2017-10-09
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多