2

我有一个脚本,当单击一个按钮时会做很多事情并重命名一些元素,所以起初我使用第一个脚本,我看到有时工作,有时不工作,所以将它更改为第二个脚本并且所有时间都运行良好,但是有一个问题。这两个脚本是否相同?有什么区别,而不是我的所有脚本,我只是用第二个替换第一个。

这是第一个脚本

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

第二个:

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

第一个问题出在哪里?

编辑

我也用这个:

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

每件事都很好,我在这里真的很困惑,我必须提到MainName并且MainId非常相似:差异是关于性格MainName = Model.Phones[0]还是其他任何事情?MainId = Model_Phones[0].

4

1 回答 1

7

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

MainName因此,如果碰巧包含以下内容,第一个片段将失败:

  • 一个单引号字符'
  • 双引号字符"
  • 需要在选择器中转义的字符,例如[or \
于 2012-05-17T06:07:24.930 回答