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

标签 javascript jquery

我有一个脚本,当单击按钮时可以执行许多操作并重命名一些元素,所以首先我使用第一个脚本,我发现有时有效,有时无效,因此将其更改为第二个脚本,并且所有时间都工作得很好,但是有一个问题。这两个脚本的作用相同吗?有什么区别,我只是将第一个脚本替换为第二个脚本,而不是我的所有脚本。

这是第一个脚本

$(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);

一切都很好,我在这里真的很困惑,我必须提到 MainNameMainId 非常相似,例如:MainName = Model.Phones[0] MainId = Model_Phones[0] 的区别是关于 . 字符还是任何其他东西?

最佳答案

是的,有区别。您的第二个代码片段在元素的 name 属性和 MainName 的值之间执行字符串比较。第一个直接将 MainName 的值注入(inject) Attribute Equals选择器。

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

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

关于javascript - 两个具有不同行为的相同 jQuery 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10630600/

相关文章:

javascript - 在 JavaScript 中创建一个可点击的数组

javascript解析json日期时区不匹配导致日期显示错误

javascript - 如何将参数传入onclick函数参数传入动态创建的按钮?

javascript - JavaScript/jQuery 的顺序

javascript - jQuery.trim() 是否已弃用?

jquery插件: localisation and facebox conflict

javascript - Ajax从数据库中删除数据功能不起作用

javascript - Accordion 复选框 jquery 和 html

javascript - 识别圆弧上的事件

javascript - 我无法使用 jquery 隐藏点击事件上的 div