jQuery选择器中的变量和字符串连接 - 它被认为是有害的吗?

时间:2012-08-13 07:18:54

标签: jquery jquery-selectors string-concatenation

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

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

由于periods and colons are valid in element ids(谁知道其他属性可能是什么),这样的代码是不是有潜在危险?

我发现有些选择器以任何其他方式写作并不容易 - 所以标准做法是什么?原生DOM方法并不总是可用。

我总是避免使用ids之类的奇怪字符,但是当编写工具供其他人使用时,最好避免这种警告。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

var match = $field.attr('id');      // or $field[0].id
var $label = $('label').filter(function() {
    return this.getAttribute('for') === match;
});
因此,完全避免担心转义match的内容。