Итак, у меня есть JQuery, динамически генерирующий элементы управления. Элементы управления вводом называются EnterLink + количество сгенерированных элементов управления. При создании нового элемента управления вводом я хочу изменить ранее созданный ввод, чтобы он был отключен. Прямо сейчас мой код выглядит так, он не работает.

if (rowCount > 0) {
                   var last = rowCount - 1;
                  $("#EnterLink" + last).disabled = true;
                  }

Похоже, это должно работать, я проверил идентификаторы элементов управления, и они точно так же отформатированы.

3
Sara Chipps 5 Июл 2009 в 12:07

2 ответа

Лучший ответ

Замените это:

$("#EnterLink" + last).disabled = true;

С этим:

$("#EnterLink" + last).attr('disabled', true);

JQuery не предоставляет обычные атрибуты DOM напрямую через функцию $(). У вас есть обернутый набор (который, конечно, будет соответствовать только 1 элементу, но, тем не менее, является набором), который расширяет элементы и добавляет к нему все качества jQuery.

Если вы хотите получить собственный элемент DOM #EnterLinkX, вы должны сделать следующее:

$("#EnterLink" + last)[0].disabled = true;

Это работает, потому что возвращаемое значение $() представляет собой структуру, подобную массиву, которая содержит согласованные элементы. [0] будет содержать первое (и в данном случае единственное) совпадение. Это даст вам доступ к таким вещам, как innerHTML и тому подобное. Однако в 99% случаев вам лучше делать это «методом jQuery», поскольку в этом весь смысл библиотеки. В этом случае вы должны использовать функцию attr для установки атрибута, и это функция removeAttr для удаления отключенного значения, если вы когда-либо захотели.

10
Paolo Bergantino 5 Июл 2009 в 23:23
Грасиас! 15 символов
 – 
Sara Chipps
5 Июл 2009 в 12:21

Если вы пытаетесь отключить кнопку, это следующее.

$ ("# EnterLink" + последний) .attr ("отключено", истина); или $ ("# EnterLink" + last) .attr ("отключено", "отключено");

2
Larry BattleLarry Battle 5 Июл 2009 в 12:18