【问题标题】:Setting value of input not working on child element输入的设置值不适用于子元素
【发布时间】:2012-12-09 22:23:36
【问题描述】:

我似乎无法理解这一点,我在 each 循环中有这段代码:

$('#prices_table tbody tr:last').children().eq(2).val("Y U NO WORK?!");

现在上面的代码不起作用,但是如果我尝试设置文本或 html,它确实指定了权利并更改了文本,但是设置值似乎不起作用。

针说具体元素是文本输入。

我在this 问题中看到,作者似乎能够通过解决元素的 attr 来使其工作,意思是:

$('#prices_table tbody tr:last').children().eq(2).attr("value","Y U NO WORK?!");

但这也没有用。我的页面上没有错误,知道可能是什么问题吗?

我应该提到然后被寻址的元素是由上面的克隆 1 行使用创建的:

$('#prices_table tbody tr:first').clone(true).appendTo('#prices_table').show();

如果它很重要,这是元素的 html :

<input class="itext product_prices_inputs" type="text" name="prices[]" value="0"/>

我的代码在 (document).ready 中运行。

由于我的大部分代码都是用 PHP 生成的,所以这是特定 tr 的输出 HTML:

<tr style="">
<td>
<select class="iselect pricelist_products_select" name="pricelist_product[]" >
     //very big select
    </select>
</td>
<td class="product_price">85</td>

<td>
<input class="itext product_prices_inputs" type="text" name="prices[]" value="0">
</td>
<td>
<a href="#" class="delete_price">delete</a>
</td>
</tr>

【问题讨论】:

  • 我将其设置在输入端。
  • 请显示标记。他们是&lt;input type='text'&gt; 还是&lt;textarea&gt;
  • 你能提供一个fiddle吗?
  • 请也显示周围的标记 - 这里可能的问题不是 &lt;input&gt; 的结构,而是你如何使用 .children().eq() 遍历它
  • “输入”如何成为“tr”标签的子标签?

标签: javascript jquery html children


【解决方案1】:

您正在尝试将输入标签作为 tr 的子标签来访问,因为在 tr 标签内不可能有除 thtd 之外的任何标签。您应该更深入地了解DOM 并找到该元素更低的级别。

应该这样做:

$('#prices_table tr:last input')

访问该表最后一行内的输入。

【讨论】:

  • 那行不通,但你给我指出了正确的方向。
  • 我找到了一个可行的解决方案,请编辑您的问题,说明为什么它不起作用而不是解决方案,我会将其标记为答案。感谢您的帮助!
【解决方案2】:

Arash Milanis 的回答让我意识到我正在尝试在 td 上设置 val() 而不是它的孩子。这段代码最终奏效了,因为 td 只有 1 个孩子:

$('#prices_table tbody tr:last').children().eq(2).children().eq(0).val("Y U NO WORK?!");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多