两个相同的jQuery脚本具有不同的行为

Sae*_*eid 2 javascript jquery

我有一个脚本,点击一个按钮做很多事情,并重命名一些元素,所以起初我使用第一个脚本,我看到有时工作,有时不工作,所以将其更改为第二个脚本,所有时间工作完美,但有一个题.这两个脚本是一样的吗?有什么区别,而不是我的所有脚本我只用第二个替换第一个.

这是第一个脚本

$(CloneTarget).find(':input[name="' + MainName + '"]').attr('name', NewSelectName);
Run Code Online (Sandbox Code Playgroud)

第二个:

$(CloneTarget).find(':input').each(function () {
    if ($(this).attr('name') == MainName) {
        $(this).attr('name', NewSelectName);
    }
});
Run Code Online (Sandbox Code Playgroud)

第一个问题出在哪里?

编辑

我也用这个:

    $(CloneTarget).find(':input[id="' + MainId + '"]').attr('id', NewSelectId);
Run Code Online (Sandbox Code Playgroud)

并且每件事情都很好我在这里真的很困惑,我必须提到MainName并且MainId如此相似:MainName = Model.Phones[0]并且MainId = Model_Phones[0]差异在于.角色或任何其他东西?

Fré*_*idi 7

是,有一点不同.您的第二个代码段在元素的name属性和值之间执行字符串比较MainName.第一个直接将值MainName注入Attribute Equals选择器.

因此,如果MainName恰好包含以下内容,则第一个代码段将失败:

  • 单引号字符',
  • 双引号字符",
  • 需要在选择器中转义的字符,例如[\.