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

Dav*_*mar 21 javascript jquery

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

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

$("#customerid_c").next().next().next().append(accountAddress);
Run Code Online (Sandbox Code Playgroud)

如果不清楚 - 我正在做的是创建新的输入标签,分配类并使其成为只读,然后将新输入两个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>
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 53

是的,它可以.

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

在jQuery 1.4.2中,您可以编写

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

此选择器在早期版本的jQuery中无法正常工作,使用Next Siblings Selector(~)选择后面的所有兄弟元素#customerid_c,然后使用:eq选择器选择由另一个选择器匹配的第三个(从零开始)元素.

jQuery有很多种选择器可以替代索引的兄弟.如果您向我们展示您的HTML,我们可以找到您的HTML.

其他说明:

您可以在一个调用中设置多个属性:

$(something).attr({ id: 'd_accountAddress', type: 'text' });
Run Code Online (Sandbox Code Playgroud)

  • 一种更清晰的写作方式.$('#customerid_c').nextAll().eq(2).append('<input class ="readOnly"id ="d_accountAddress"/>'); (6认同)
  • @Shekhar:你做不到.(除非您对完整ID进行硬编码,否则可能使用服务器端内联代码) (2认同)