Я думаю, что вы не должны использовать removeProp
, удаляя свойство элемента может вызвать нежелательное поведение. Но ваш вопрос вы можете написать:
var $search = $('#search');
function setSearchForm() {
$search.find('#clear_button').toggle();
$search.find('input[type=submit]').prop('disabled', !$search.find('input[type=text]').val().length);
}
Просто используйте опору и установить флаг, чтобы отключить его или нет. Выдержка из official doc
С некоторыми встроенными свойствами DOM элемента или объекта окна, браузеры могут генерировать ошибку, если сделана попытка удалить свойство. jQuery сначала присваивает значение, неопределенное свойству, и игнорирует любые ошибки, которые генерирует браузер. В общем случае необходимо только удалить настраиваемые свойства, которые были установлены на объекте, а не встроенные (собственные) свойства.
Примечание. Не используйте этот метод для удаления собственных свойств, таких как отмеченные, отключенные или выбранные. Это полностью удалит свойство и, после удаления, не может быть добавлено снова элементу. Используйте .prop(), чтобы вместо этого установить эти свойства в false.
Поскольку вы используете идентификаторы и которые должны быть уникальными, вы можете сделать это, как хорошо
//cache this outside since this is gng to be unique and to avoid creating the object over and again
var $search = $('#search'), $clear = $('#clear_button');
function setSearchForm() {
$clear.toggle();
$search.find('input[type=submit]').prop('disabled', !$search.find('input[type=text]').val().length);
}
Это действительно очень коротко! Большое спасибо. И спасибо всем остальным. – Tintin81
Я бы рекомендовал сделать код более удобочитаемым. Это важно в любой ситуации, но особенно учитывая, что OP является новым для js и jQuery. Пусть миникатор/обфускатор беспокоится о том, чтобы сделать компактный источник. – ComethTheNerd
@SCRIPTONITE - вопрос заключался не в том, как сделать его более читаемым, а как сделать его короче, и он отлично читаем для меня? – adeneo