我有一个文本框,并在表格的行内标签。要访问我正在使用的文本框
data= $(this).find('#txtName').val();
现在我无法以相同的方式访问标签。标签呈现为
<label for="Total">$65.00</label>
如何访问标签的值并为其赋值?
答案 0 :(得分:5)
很难说你何时没有展示你的HTML结构,但有几种可能性:
如果您的标签是独立的,请执行以下操作:
<tr>
<td><label for='txtName'>Some field</label></td>
<td><input type='text' id='txtName'></td>
</tr>
...然后,如果文本框的id
为txtName
,您可以使用attribute selector搜索具有for
属性的标签:
var label = this.find("label[for=txtName]"); // If the label is also within `this`
// or
var label = $("label[for=txtName]"); // Find it no matter where it is
修改:因此,如果字段的名称为Total
,则为:
var label = this.find("label[for=Total]"); // If the label is also within `this`
// or
var label = $("label[for=Total]"); // Find it no matter where it is
要设置其内容(而非“值”),请使用text
或html
:
label.text("Field name");
label.html("Field <em>name</em>");
修改:现在Drackir已经修复了帖子的格式,我们可以看到您正在使用上面的for
属性。保留第二部分以防万一其他人看到这一点并且正在这样做。
如果文本框位于标签内,请执行以下操作:
<tr>
<td>
<label>Some field: <input type='text' id='txtName'></label>
</td>
</tr>
...如果$(this).find('#txtName').val();
有效,那么这应该有效:
var textBox = $(this).find('#txtName');
var label = textBox.parents('label');
// Do something with `textBox.val()` and `label`
(如果文本框确实是标签的直接子项,则可以使用.parent()
而不是.parents('label')
,但如果文本框是后代而不是文本框,则后者非常有用直接的孩子。)
获得label
后,您无法通过text
或html
设置内容,因为您将清除该字段(因为它位于标签内)。你可以这样做:
var textBox = $(this).find('#txtName');
var label = textBox.parents('label');
textBox.detach(); // temporarily remove from the DOM
label.text("Field name: ");
textBox.appendTo(label);
暂时删除保管文本框(detach
保留事件处理程序),将标签文本设置为“字段名称:”,然后将文本框追加回来。
更多:
答案 1 :(得分:0)
您可以按$("#yourlabelid").text()
获取标签值,并将其值设置为$("#yourlabelid").text(value)