这个jQuery代码片段可以缩短吗?

时间:2010-03-22 12:49:39

标签: javascript jquery

我刚刚开始使用jQuery,虽然下面的代码完成了工作,但我觉得它可以缩短。

var accountAddress = $(document.createElement("input")).addClass("readOnly")
        .attr("contentEditable", "false").attr("id", "d_accountAddress");

$("#customerid_c").next().next().next().append(accountAddress);

如果不清楚 - 我正在做的是创建新的输入标签,分配类并使其成为只读,然后将新输入定位在一些已知文本右侧的两个TD。

更新

这是我正在修改的简化HTML。我添加内容的地方标有 ## 1 ## ## 2 ##

<TD id=customerid_c>
    <LABEL for=customerid>Customer</LABEL>
</TD>
<TD id=customerid_d></TD>
<TD class=ms-crm-Field-Normal>
    <LABEL>##1##</LABEL>
</TD>
<TD>##2##</TD>

1 个答案:

答案 0 :(得分:53)

是的,它可以。

$('#customerid_c').nextAll().eq(2)
    .append('<input class="readOnly" id="d_accountAddress" />');

在jQuery 1.4.2中,您可以编写

$('#customerid_c~:eq(2)')
    .append('<input class="readOnly" id="d_accountAddress" />');

此选择器在早期版本的jQuery中无法正常运行,使用Next Siblings Selector (~)选择#customerid_c后的所有同级元素,然后使用:eq选择器选择第三个(由其他选择器匹配的基于零的元素。

jQuery有large variety of selectors可能会替换索引的兄弟。如果您向我们展示您的HTML,我们可以为您找到一个。

其他说明:

您可以在一次通话中设置多个属性:

$(something).attr({ id: 'd_accountAddress', type: 'text' });