在JQuery中访问行内的标签

时间:2011-02-09 06:05:38

标签: jquery

我有一个文本框,并在表格的行内标签。要访问我正在使用的文本框 data= $(this).find('#txtName').val();

现在我无法以相同的方式访问标签。标签呈现为
<label for="Total">$65.00</label>

如何访问标签的值并为其赋值?

2 个答案:

答案 0 :(得分:5)

很难说你何时没有展示你的HTML结构,但有几种可能性:

1)标签是分开的

如果您的标签是独立的,请执行以下操作:

<tr>
<td><label for='txtName'>Some field</label></td>
<td><input type='text' id='txtName'></td>
</tr>

...然后,如果文本框的idtxtName,您可以使用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

要设置其内容(而非“值”),请使用texthtml

label.text("Field name");
label.html("Field <em>name</em>");

2)文本框 标签:

修改:现在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后,您无法通过texthtml设置内容,因为您将清除该字段(因为它位于标签内)。你可以这样做:

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)