[英]Don't understand why alert gives me correct result, while function doesn't execute javascript
我有三个按钮。 想法是在单击#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')
。 知道为什么吗?
与您的代码相关的示例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来更改for..in循环(因为您正在循环一个array ,而不是object ), 但是在特定情况下它可以工作,请检查此作为参考: 为什么不我用for..in与数组
工作提琴:
使用$(m).text('it works')
.button()
不是jQuery函数
如果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')
}
})
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.