如何从“id”而不是“value”中获取值并在页面上显示?现在我有Holzart:3
,我希望Holzart:Lärche
。
我有这个功能:
$(document).ready(function() {
$("input[name='holzart']").click(function() {
PobierzWartosc2();
});
});
function PobierzWartosc2() {
$('#aus2').html('');
$("input[name='holzart']").each(function() {
if (this.checked == true) {
$('#aus2').append('Holzart:'+ $(this).val()) }
});
}
和这个HTML:
<tr><td><label>
<input type="radio" name="holzart" value="3" id="Lärche" >Lärche</label></td></tr>
答案 0 :(得分:3)
只需使用this.id
代替$(this).val()
。
但是,ID是存储数据的最差属性之一,除非它是对象的实际ID。您可以考虑添加data-something="whatever"
,然后使用$(this).data('something')
答案 1 :(得分:0)
所以改变你的代码。你附加了价值,而不是ID。
$('#aus2').append('Holzart:'+ $(this).val()) }
});
应该是
$('#aus2').append('Holzart:'+ $(this).attr('id')) }
});
修改强>
正如其他人推荐的那样,最好使用this.id而不是$(this).attr('id')。
答案 2 :(得分:0)
$('#aus2').append('Holzart:'+ $(this).attr('id'))
答案 3 :(得分:0)
而不是$(this).val()
您需要使用$(this).attr("id")
答案 4 :(得分:0)
使用this.id
或$(this).attr('id')
。不同之处在于,this
是一个JavaScript对象,引用了单击的单选按钮,但$(this)
是一个jQuery对象,包装JavaScript对象以提供更多功能。
答案 5 :(得分:0)
以下是代码的改进版本,带注释
// $(document).ready() is superfluous, use $()
$(function() {
$("input[name='holzart']").click(function() {
// call the function in the correct context to retain the meaning of "this"
PobierzWartosc2.call(this);
});
});
function PobierzWartosc2() {
// just overwrite the current content instead of calling .html('') first
$('#aus2').text( this.checked ? this.id : '' );
}
基本上,你想要:
$(function() {
$(":radio[name='holzart']").click(function() {
$('#aus2').text( this.checked ? this.id : '' );
});
});
除此之外,我同意ThiefMaster id
是存储任何类型数据的可怕地方。
使用HTML5 data-*
属性或存储其他数据 - 例如隐藏<span>
(如果您的网页不是HTML5)。在您的情况下,您甚至只需使用关联的<label>
:
$(function() {
$(":radio[name='holzart']").click(function() {
var $label = $("label[for='" + this.id + "']");
$('#aus2').text( this.checked ? $label.text() : '' );
});
});