Javascript 如何使用jQuery成功地选择一个新创建的带有小胡子的元素?
我正在基于一个小胡子模板生成一些HTML,例如:Javascript 如何使用jQuery成功地选择一个新创建的带有小胡子的元素?,javascript,mustache,Javascript,Mustache,我正在基于一个小胡子模板生成一些HTML,例如: 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. }
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.
}
因此,元素:
<input type='button' value='Hello' class='show'>
这也不是:
$('.show');
这是理所当然的。返回表示停止执行。
现在,我在返回之前和之后添加了选择器,删除了返回(不能删除返回,因为这样它就不会输出HTML),但没有任何效果
我如何选择新创建的元素来使用它?您的问题是,您试图在动态添加的元素上附加事件,这比在正常例程中添加事件需要多一点时间 你就是这样做的
$('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中没有选择,什么都没有
这是因为您正在从函数返回。并且在return语句之后不执行任何操作。在其他函数中编写代码,并在generate\u hello
函数之后调用它
差不多
generate_hello();
someOtherFunction
请检查评论以及其他答案,以获取有价值的信息。 问题不在于代码,而在于我如何设计我的系统,呃,逻辑 此代码在包装函数(一级以上)中调用,如下所示: 当然,我只是简单地(在我的
包装器
中)附加一个html字符串(标记
),这显然不允许在我的原始函数中执行任何操作,,因为它只输出而已。
它从我的HTML中获取数据:
<div class="test" data-callback="generate_markup">
我想这里的教训是:控制你的逻辑,知道每个函数返回什么以及它是如何处理的。你怎么知道
$('.show')
不起作用?您是否尝试过检查$('.show').lengh代码>等等?@GeorgeBailey是的!我尽了我应有的努力,但我会再努力的。编辑:不,不行。返回之后的任何内容都不会执行(应该是这样的,但我想知道,我是否应该将mustache例程解耦到另一个函数中?选择它后,您想实现什么?添加任何事件等?@GeorgeBailey Correct!这基本上添加了一个按钮,然后我将操纵它的值,执行一些AJAX操作,等等。您确定新创建的元素是实际的吗在DOM中是什么?这是一个很好的注释,但不幸的是,我的问题实际上是,在我的胡子返回后,没有任何东西会执行。是的,你大约90%是对的,只是少了一点香料。看到我的答案了。
var markup = $(window[callback](e.currentTarget));
markup.attr('data-screen', callback);
wrapper.append(markup);
<div class="test" data-callback="generate_markup">
var markup = $(window[callback](e.currentTarget));
markup.attr('data-screen', callback);
wrapper.append(markup);
secondary_callback_after_markup_is_done();