Я пытаюсь установить имя и идентификатор элемента при нажатии переключателя. Чтобы избежать дублирования селектора, я попытался настроить его следующим образом:Цепочки функций jquery - Beginner
$("#selectOther").click(function() {
$("[field=primaryInput]").attr('id', "modifiedId", function() {
$(this).attr('name', "modifiedName");
if ($(this).attr('visible') == "False") {
$(this).slideDown('fast');
$(this).attr("visible", "True");
}
});
});
Однако, он не работает. Кажется, что идентификатор изменен, но Имя не является, а остальная часть функции выполнена. Может ли кто-нибудь помочь мне понять, как правильно это выразить?
Адрес JFiddle.
EDIT: В моем последнем случае у меня будет несколько кнопок, которые откроют поле, если оно скрыто, и другие, которые скроют его, если он будет виден. Вот почему я не использую .slideToggle()
Не удосужились ли вы прочитать [документацию] (http://api.jquery.com/attr/)? – Amit
'attr()' принимает один или два аргумента, либо идентификатор атрибута (getter), либо идентификатор атрибута, и значение (setter). Не уверен, что вы ожидаете от этого. Вы могли бы просто сделать что-то вроде: 'var thing = $ (" [field = primaryInput] "); thing.attr ('id', "modifiedId"); thing.attr ('name', "modifiedName"); ... ' – Tibrogargan
Обратите внимание, что изменение атрибутов' id' элементов динамически - не очень хорошая идея. Они призваны быть неизменными. Если вам нужно знать об изменении элемента, используйте буквально любой другой атрибут. Также обратите внимание, что 'field' и' visible' не являются допустимыми атрибутами и будут означать, что ваш HTML недействителен. Чтобы хранить пользовательские метаданные с помощью элемента, используйте атрибут 'data- *': https://developer.mozilla.org/en/docs/Web/Guide/HTML/Using_data_attributes –