jquery处理程序不使用动态添加的id
我的页面上有以下元素,它从我的javascript MVC框架中获取一个动态添加的ID:jquery处理程序不使用动态添加的id,jquery,dynamic,click,knockout.js,Jquery,Dynamic,Click,Knockout.js,我的页面上有以下元素,它从我的javascript MVC框架中获取一个动态添加的ID: <input data-bind="attr: { id: attributeName }" type="text" /> 当使用动态“id”属性将输入元素动态添加到页面时,上述代码似乎不起作用。我在knockout.js foreach循环中将此元素添加到页面中,但我不知道这是否重要。还有其他人碰到过这个吗 这是真正的代码。。。如何模拟$(“body”).on()方法来替换此方法: $("
<input data-bind="attr: { id: attributeName }" type="text" />
当使用动态“id”属性将输入元素动态添加到页面时,上述代码似乎不起作用。我在knockout.js foreach循环中将此元素添加到页面中,但我不知道这是否重要。还有其他人碰到过这个吗
这是真正的代码。。。如何模拟$(“body”).on()方法来替换此方法:
$("#job_title").typeahead({
source: searchFunction,
onselect: function(obj) {
}
});
您可能要尝试:
$(“body”)。在(“click”、“#job_title”,function(){alert('hi');
});
这应该是可行的,因为您正在动态添加元素,所以单击不可行。为什么不使用单击数据绑定呢?比如:
<input data-bind="attr: { id: attributeName }, click: functionToCall" type="text" />
这将允许您从DOM操作中抽象出来,这是使用数据绑定的主要优势之一。您甚至可以让该函数来自视图模型上的一个属性,该属性可以对上下文做出动态反应。我建议您编写一个自定义的knockout活页夹,如下所示
ko.bindingHandlers.typehead = {
init: function(e){
$(e).typeahead({
source: searchFunction,
onselect: function(obj) {
}
});
}
};
然后像其他脱模粘合剂一样使用粘合剂
<input id="job_title" data-bind="attr: { id: attributeName }, typehead:true" type="text" />
因为在分配单击事件时,动态添加的输入元素在页面上不存在。。所以从技术上讲,点击事件从未被绑定。我也是这么想的,但如果我执行此警报(“工作头衔”).length)。它返回1而不是0。@Adamlevit我相信,因为它可以识别它,但click事件没有绑定到它。该警报在哪里?我将元素推到页面上,并在下面的一行添加click处理程序。这是比赛条件吗?所以这是有效的。。。这让我进入解决方案的第一部分。现在,因为我真的将此作为一个原始示例来使用twitter引导程序typeahead插件。我如何使用它来模拟这段代码:$(“#job_title”).typeahead({source:searchFunction,onselect:function(obj){});问题是我需要在元素中添加twitter引导typeahead插件……在这种情况下,定制绑定实际上可能是一种方式——类似于Wiz的答案
ko.bindingHandlers.typehead = {
init: function(e){
$(e).typeahead({
source: searchFunction,
onselect: function(obj) {
}
});
}
};
<input id="job_title" data-bind="attr: { id: attributeName }, typehead:true" type="text" />