我有三个按钮。想法是在单击#1时更改按钮ID#11和#12上的文本。
$(document).ready(function() {
var dict = {#1: ['#11', '#12']}
$('button').click(function () {
var k = dict['#'+$(this).attr('id')]
for (c in k){
var m = k[c]
$(m).button('it works')
}
})
});
现在的问题是:如果我致电alert(m)
,我会得到正确的结果,但它不适用于$(m).button('it works')
。知道为什么吗?
答案 0 :(得分:4)
与您的代码相关的示例HTML:
<button id="1">
Ohay
</button>
<button id="11">
hehe
</button>
<button id="12">
haha
</button>
更正javascript:
$(document).ready(function() {
var dict = {'#1': ['#11', '#12']}
$('button').click(function () {
var k = dict['#'+$(this).attr('id')]
for (c = 0; c < k.length; c++){
var m = k[c]
$(m).text('it works')
}
})
});
据我所知, .button 原型不是标准的jQuery原型,因此我可能怀疑你想要使用 .text 。
此外,请注意,您应该使用常规替换 for..in 周期(因为您正在循环数组,而不是对象),尽管它可以在特定情况下使用,请查看此参考:why shouldn't I use for..in with arrays
工作小提琴:
答案 1 :(得分:3)
使用$(m).text('it works')
,.button()
不是jQuery函数
答案 2 :(得分:1)
如果m
是button
目标,那么您只需要设置它value
jQuery has no function called button. the right solution would be:
$(m).text('some text')
如果按钮实际上是<input type='button'
,那么您可能需要执行以下操作:
$(m).val('some text')
解决方案就是这样:
$(document).ready(function() {
var dict = {#1: ['#11', '#12']}
$('button').click(function () {
var k = dict['#'+$(this).attr('id')]
for (c in k){
var m = k[c]
$(m).val('it works')
}
})
});