我试图在点击按钮时更新按钮的文本。我有许多具有相同类但没有id的按钮。为什么this不起作用?
<input type="button" class="add-button" value="Default" />
<input type="button" class="add-button" value="Default" />
<input type="button" class="add-button" value="Default" />
<input type="button" class="add-button" value="Default" />
$(document).ready(function() {
$('.add-button').click(function() {
alert('clicked');
$(this).html('Changed');
});
});
触发警报,但按钮未更改。
答案 0 :(得分:7)
this.value
使用input
。见下文,
$(document).ready(function() {
$('.add-button').click(function() {
alert('clicked');
this.value = 'Changed';
});
});
答案 1 :(得分:4)
试试这个
$(this).val("changed");
html()
仅替换innerHtml
。它不会改变按钮值。
答案 2 :(得分:2)
你想改变它的价值,而不是html。它没有html孩子。
$(this).val('Changed');
或
this.value = "Changed";
答案 3 :(得分:2)
我认为你需要的是
$(this).val('Changed');
而不是
$(this).html('Changed');
答案 4 :(得分:1)
您正尝试更改该值,因此请使用.val()
方法:
$(this).val('Changed');
您也可以简单地使用this.value = 'Changed';
,因为value
是跨浏览器的DOM属性,甚至是.prop()
方法:
$(this).prop('value', 'Changed');
.html()
更改了元素的内容,input
元素没有内容,没有结束标记。它可以使用<button>
元素,它有一个结束标记和内容。
答案 5 :(得分:1)
更改值而不是html。表单字段的jQuery内容可以通过val更改。
$(document).ready(function() {
$('.add-button').click(function() {
alert('clicked');
$(this).val('Changed'); // or this.value == 'Changed';
});
});
答案 6 :(得分:1)
这些是没有innerHTML的输入按钮,用于设置按钮文本以设置按钮的value属性或value属性。
$(this).attr('value', 'Changed'); /* Change value attribute */
// or this.value = 'Changed'; /* Change value property */
答案 7 :(得分:1)
答案 8 :(得分:0)
尝试.attr()
方法:
$(document).ready(function() {
$('.add-button').click(function() {
alert('clicked');
$(this).attr( 'value', 'NEW_TEXT');
});
});
答案 9 :(得分:0)
因为你的按钮不包含任何html。所以你可以改变它或设置它。你需要的是:
$(this).val("Changed");