Javascript 如何为jQuery选择器动态构建元素ID?

Javascript 如何为jQuery选择器动态构建元素ID?,javascript,jquery,Javascript,Jquery,我想通过使用循环来减少这段代码。我该怎么做 $("#whiteJenisPembayaran1").live('focus', function() { $("#whiteJenisPembayaran1").typeahead(typeaheadConfig); }); $("#whiteJenisPembayaran2").live('focus', function() { $("#whiteJenisPembayaran2").typeahead(typeahead

我想通过使用循环来减少这段代码。我该怎么做

$("#whiteJenisPembayaran1").live('focus', function() {
    $("#whiteJenisPembayaran1").typeahead(typeaheadConfig);
});
$("#whiteJenisPembayaran2").live('focus', function() {   
    $("#whiteJenisPembayaran2").typeahead(typeaheadConfig);
});
$("#whiteJenisPembayaran3").live('focus', function() {
    $("#whiteJenisPembayaran3").typeahead(typeaheadConfig);
});
或者现在更正确的方式:

$(document).on('focus', '#whiteJenisPembayaran1, #whiteJenisPembayaran2, #whiteJenisPembayaran3', function() {
    $(this).typeahead(typeaheadConfig);
});

这样做是为了防止循环内绑定事件的闭包问题。

您可以使用属性选择器[id^=string],它将选择以字符串开头的id的所有内容

$("[id^=whiteJenisPembayaran]").live('focus', function() {
    $(this).typeahead(typeaheadConfig);
});

您可以有一个包含所有ID的数组,如下所示:

ids = [ '#whiteJenisPembayaran1', '#whiteJenisPembayaran2', '#whiteJenisPembayaran3' ];

for (i = 0; i < ids.length; i++) {
    $(ids[i]).live('focus', function() {
        $(ids[i]).typeahead(typeaheadConfig);
    });
} 

您可以更改HTML吗?如果是,最好的方法是为这些元素设置class属性。 这样您就可以做到:

HTML:


动态如何?最后的号码是多少?var num=任何值$whiteJenisPembayaran+num应该这样做。您可能希望在内部函数体中使用$this,否则您将对每个匹配应用.typeahead,而不关注任何匹配。真的,我没有注意。编辑。谢谢。现在这太棒了:哇,这是工作。非常感谢你:太好了!如果这是你问题的答案,请记下我的答案。谢谢。很好,但OP可能需要一个解释。很好,但OP可能需要一个解释。@Lightness Races in Orbit:如果他问我,我非常怀疑-我会解释一些特别的事情。你没有理解我的意思。@Lightness Races in Orbit:也许。我到底错过了什么?堆栈溢出的答案最好是在它们描述和解释时,提供洞察力和理解,而不仅仅是转储代码。。。你有足够的口碑来了解新来者使用勺子喂食语言的危害!
$("[id^=whiteJenisPembayaran]").live('focus', function() {
    $(this).typeahead(typeaheadConfig);
});
ids = [ '#whiteJenisPembayaran1', '#whiteJenisPembayaran2', '#whiteJenisPembayaran3' ];

for (i = 0; i < ids.length; i++) {
    $(ids[i]).live('focus', function() {
        $(ids[i]).typeahead(typeaheadConfig);
    });
} 
<div class="whiteJenisPembayaran" id="whiteJenisPembayaran1"></div>
<div class="whiteJenisPembayaran" id="whiteJenisPembayaran2"></div>
<div class="whiteJenisPembayaran" id="whiteJenisPembayaran3"></div>
<div class="whiteJenisPembayaran" id="whiteJenisPembayaran4"></div>
$(".whiteJenisPembayaran").live('focus', function() {
    $(this).typeahead(typeaheadConfig);
});