Этот фрагмент кода jQuery может быть сокращен?

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

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

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

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

Обновление:

Это - упрощенный 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>
21
задан Ted Goas 21 June 2016 в 13:15
поделиться

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 selector для выбора третьего (основанного на нуле) элемента, сопоставленного с другим селектором.

jQuery имеет большое разнообразие селекторов, которые, вероятно, могут заменить индексированный брат или сестра. Если вы покажете нам свой HTML, мы сможем подобрать вам такой.

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

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

$(something).attr({ id: 'd_accountAddress', type: 'text' });
53
ответ дан 29 November 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: