Подтвердить что ты не робот

Можно ли сократить этот фрагмент кода jQuery?

Я только начал использовать jQuery, и, хотя следующий код выполняет эту работу, у меня возникает ощущение, что его можно сократить.

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

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

Если это не ясно - то, что я делаю, - это создать новый тег ввода, назначить класс и сделать его доступным только для чтения, а затем позиционировать новый вход два TD справа от некоторого известного текста.

Update:

Это упрощенный 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>
4b9b3361

Ответ 1

Да, это возможно.

$('#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 имеет большое разнообразие селекторов, которое, возможно, заменит проиндексированный брат. Если вы покажете нам свой HTML-код, мы сможем найти его.

Другие примечания:

Вы можете установить несколько атрибутов за один вызов:

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