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);
}
prop を使用し、フラグを設定して無効にするかどうかを設定します。公式ドキュメントからの抜粋
DOM 要素またはウィンドウ オブジェクトの一部の組み込みプロパティでは、プロパティを削除しようとすると、ブラウザでエラーが発生する場合があります。jQuery は最初に値 undefined をプロパティに割り当て、ブラウザーが生成するエラーを無視します。一般に、組み込み (ネイティブ) プロパティではなく、オブジェクトに設定されているカスタム プロパティのみを削除する必要があります。
注: このメソッドを使用して、checked、disabled、または selected などのネイティブ プロパティを削除しないでください。これにより、プロパティが完全に削除されます。一度削除すると、要素に再度追加することはできません。.prop() を使用して、代わりにこれらのプロパティを false に設定してください。
IDを使用しており、一意でなければならないので、この方法でも行うことができます
//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);
}