0

jQueryセレクター内で文字列の連結がよく見られます。

var $field = $('.' + field, $form);
var $label = $('label[for="' + $field.attr('id') + '"]');
var $elem = $('#' + elem);

ピリオドとコロンは要素IDで有効であるため(そして他の属性に何が含まれるかを誰が知っているか)、このようなコードは潜在的に危険ではありませんか?

一部のセレクターは、他の方法で書くのは簡単ではないことがわかりました。それでは、標準的な方法は何ですか?ネイティブDOMメソッドが常に利用できるとは限りません。

私は常にIDなどの奇妙な文字を避けてきましたが、他の人が一般的に使用するツールを作成するときは、その警告を避けるとよいでしょう。

4

2 に答える 2

0

最初と3番目の例は一般的であり、何が入っているかを制御する限り無害fieldですelem

私は2番目の形式を使用することはなく、次のように記述します。

var match = $field.attr('id');      // or $field[0].id
var $label = $('label').filter(function() {
    return this.getAttribute('for') === match;
});

したがって、の内容をエスケープすることを心配する必要が完全に回避されmatchます。

于 2012-08-13T07:48:15.520 に答える
0

文字列の内容を完全に制御できる場合は問題ありませんが、ライブラリ ツールの場合は問題になります。

ツールの名前や ID を受け入れるのではなく、完全なセレクターまたは要素/jQuery 参照を受け入れます。そうすれば、機能するセレクターを作成するのは、ツールを使用する人の責任になります。

于 2012-08-13T07:33:30.677 に答える