0

我经常在 jQuery 选择器中看到字符串连接:

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

由于句点和冒号在元素 id 中有效(谁知道其他属性中可能包含什么),这样的代码是否没有潜在危险?

我发现一些选择器以任何其他方式编写都不是微不足道的——那么标准做法是什么?原生 DOM 方法并不总是可用的。

我一直避免在 ids 等中使用奇怪的字符,但是在编写供他人普遍使用的工具时,最好避免这种警告。

4

2 回答 2

0

当您完全控制字符串中的内容时,这不是问题,但对于库工具来说,这将是一个问题。

只是不接受工具的名称或身份,接受完整的选择器或元素/jQuery 引用。这样,使用该工具的人有责任创建工作选择器。

于 2012-08-13T07:33:30.677 回答
0

只要您控制 and 中的内容,您的第一个和第三个示例是常见且无害fieldelem

我从不使用第二种形式,并且会这样写:

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 回答