如何使用jQuery成功选择Mustache新创建的元素?

时间:2018-05-15 18:58:31

标签: javascript mustache

我正在基于胡子模板生成一些HTML,如下:

<input type='button' value='Hello' class='show'>

所以,元素:

return mustache...

出生了!真棒。

如果我将它放在jQuery('.show');

之后,这不起作用
$('.show');

这也不是:

return

理所当然。 let d = Dictionary.init(grouping: array) {$0["groupID"]!} 表示停止执行。 现在,我在返回之前和之后添加了选择器,删除了返回(无法删除返回,因为它只是不输出HTML)但没有任何作用。

如何选择我新创建的元素进行播放?

2 个答案:

答案 0 :(得分:0)

你的问题是你试图在动态添加的元素上附加事件,这比在正常例程中添加事件要多一点。

你就是这样做的

$('body').on('click', '.show', function() {
  alert("Clicked on element with class show")
});

<强>更新

function generate_hello(element) {
    var template = jQuery('#hello_template');
    return mustache(template.html(), {
        tooltip: 'Hello'
    });
    ..nothing gets executed here, no selecting in jQuery, no nothing.
}

这里没有任何东西被执行,没有在jQuery中选择,没有任何东西

这是因为你从函数返回。返回声明后没有执行任何操作。将代码写入其他函数并在generate_hello函数后调用它。

这样的东西
generate_hello();
someOtherFunction

答案 1 :(得分:0)

请查看评论以及有价值信息的其他答案。

问题不在于代码,而在于我如何设计我的系统,错误,逻辑。

此代码在包装函数(上面一级)中调用,如下所示:

var markup = $(window[callback](e.currentTarget));
markup.attr('data-screen', callback);
wrapper.append(markup);

当然,我只是将(wrapper)一串html(markup)附加到(<div class="test" data-callback="generate_markup"> ),这显然不允许在我的原始函数中做任何事情,因为它只是输出而已。

它从我的HTML中获取数据:

generate_hello

刚刚执行了回调,这是我原来的wrapper.append(markup);。没什么。

这里的解决方案是,在完成输出之后,执行另一个回调,因此,在我的var markup = $(window[callback](e.currentTarget)); markup.attr('data-screen', callback); wrapper.append(markup); secondary_callback_after_markup_is_done(); 后,我只是调用我的第二个回调:

{{1}}

我想这里的教训是:控制你的逻辑并知道每个函数返回的内容以及它是如何处理的。