我正在基于胡子模板生成一些HTML,如下:
<input type='button' value='Hello' class='show'>
所以,元素:
return mustache...
出生了!真棒。
如果我将它放在jQuery('.show');
$('.show');
这也不是:
return
理所当然。 let d = Dictionary.init(grouping: array) {$0["groupID"]!}
表示停止执行。
现在,我在返回之前和之后添加了选择器,删除了返回(无法删除返回,因为它只是不输出HTML)但没有任何作用。
如何选择我新创建的元素进行播放?
答案 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}}
我想这里的教训是:控制你的逻辑并知道每个函数返回的内容以及它是如何处理的。