jQuery - 字符串变量被转义?

时间:2012-09-26 15:43:39

标签: javascript jquery

我有一个相当简单的脚本,旨在根据客户类型隐藏/取消隐藏各种表单字段。代码如下:


var customerTypeFields = [];
    customerTypeFields['Individual'] = ['First Name(s)', 'Last Name', 'Date of Birth'];
    customerTypeFields['Limited Company'] = ['Name', 'Company Number'];
    customerTypeFields['Partnership'] = ['Name', 'Company Number'];

    $('#customer-type-selector').chosen().change( function() {
        var visibleFields = customerTypeFields[$(this).children("option[value='" + $(this).attr('value') + "']").text()];
        console.log(visibleFields);
        $.each(visibleFields, function(i, field) {
            $('#customer-features').find('input[data-feature-type=' + field + ']').parent().parent().show();
        });
    });

这似乎在某种程度上有效,但在加载个人时出现了一个奇怪的错误,即:

Uncaught Error: Syntax error, unrecognized expression: input[data-feature-type=First (s)] 

你会注意到First (s)不在我的数组中,因此似乎正在删除单词Name - 任何想法为什么会像这样编辑字符串?

谢谢!

1 个答案:

答案 0 :(得分:1)

以双引号逃脱:

(...)  .find('input[data-feature-type="' + field + '"]')  (...)

有关jQuery's Attribute Equals Selector page的详情,请参阅。它基本上将其定义为:

  

jQuery('[attribute="value"]')