我刚刚开始使用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>
答案 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' });