レガシーコードを使用して、jQueryの新しいバージョンに更新しようとしています。発生したエラーの1つは、ブラケットをエスケープする必要があるか、jQueryがエラーをスローすることです。
次のような括弧を含むattrib_idがあります。
group[12345][qf_attrib_12345]
この値は、select要素のname属性に保存されます。この要素を選択しようとしたときにjQueryがエラーをスローしないようにするために、次のように角かっこをエスケープしようとしました。
var escapeAttribId = attrib_id.replace(/[/g, "\[");
var escapeAttribId = escapeAttribId.replace(/]/g, "\]");
escapeAttribIdを画面に警告すると、次の値になります。
group[26782][qf_attrib_16078]
それは私が期待するものです。ただし、次のようにこの新しいエスケープバージョンを使用して選択しようとすると:
var att_default = master_selects.filter("[name="+escapeAttribId+"]").attr("value");
時々、次の警告とともにエラーが表示されることがあります。
Error: Syntax error, unrecognized expression: [name="group[26782"][qf_attrib_16078]]
エスケープされた文字列の中に一重引用符が追加されます。これが構文エラーの原因になっていると確信しています。この一重引用符の配置を文字列内に移動できるものを誰か知っていますか?
回答:
回答№1は1角括弧をエスケープするのではなく、代わりに属性の値を引用できます。
var att_default = master_selects.filter("[name="" + attrib_id+ ""]").attr("value");