Javascript 重复ID影响

Javascript 重复ID影响,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,在JQM中有以下疑问: 1.如果我们在单独的html文件中使用重复ID,对jquery mobile有什么影响 比如说,如果我们在单独的html文件中有重复的id,但是如果我们不使用id做任何事情,它会影响我们的工作 如果我们在javascript中通过某种层次结构使用一个唯一的选择器,那么在单独的html文件中有重复的ID可以吗 我对此很担心,因为我使用相同的html文件,使用ajax将其加载到不同的页面中。由于在本例中ID是相同的,并且两者都将在DOM中,因此会产生什么影响。或者,我应该通过

在JQM中有以下疑问:

1.如果我们在单独的html文件中使用重复ID,对jquery mobile有什么影响

  • 比如说,如果我们在单独的html文件中有重复的id,但是如果我们不使用id做任何事情,它会影响我们的工作

  • 如果我们在javascript中通过某种层次结构使用一个唯一的选择器,那么在单独的html文件中有重复的ID可以吗

  • 我对此很担心,因为我使用相同的html文件,使用ajax将其加载到不同的页面中。由于在本例中ID是相同的,并且两者都将在DOM中,因此会产生什么影响。或者,我应该通过更改id创建一个单独的文件并使用它。

    Intro: 让我们从头开始,您可能知道jQuery Mobile如何处理页面,但其他一些读者可能不知道

    基本上,jquerymobiles使用具有属性data role=“page”的div元素来表示用户可见的页面。在给定的时刻只能看到一个页面(一些插件可以提供更多,但这不是问题的重点),因此产生了多层应用程序的错觉。可以将多个页面加载到DOM中,这将为我们提供良好的页面转换效果

    答案:
  • 在jQuery Mobile中使用重复id,如果使用得当,不会产生任何不良影响。但这条规则总有例外。页面必须具有唯一的id。这意味着您可以拥有具有相同id的页面,但只能访问第一个实例。所有其他页面元素都可以具有相同的id,只要您仔细观察自己在做什么,jQuery Mobile就不会在意

  • 就像答案1。在一个单独的html文件或一个大的html文件中是否有相同的id并不重要,只要页面id是唯一的。同样,您可以加载另一个html文件,其中的页面id与已加载到DOM中的页面id相同,但只要您尝试访问其中的内容,您就会访问最初存储到DOM中的页面。所以像这样使用它没有意义

  • 同样,唯一的规则是页面必须有唯一的id。您可以拥有尽可能多的其他相同id,只要它们是页面容器的子级

  • 这一切可能令人困惑,但请容忍我。为了解决这个问题,jQuery开发人员创建了一个独特的选择器,它将帮助您获得一个活动页面。这一点很重要,因为如果我们的页面内容在各个页面之间相同(当然,页面id是唯一的),那么只有使用一些活动页面选择器才能访问当前页面内容

    示例:

    $.mobile.activePage
    
    这是一个活动页面选择器,它基本上是一个保存整个活动页面的对象,因此您可以使用它来更改活动页面内容,例如:

    $.mobile.activePage.find('[data-role="content"]').append(......);
    
    然后,如果您想访问其他页面相同的内容,您可以这样做:

    $('#pageID').find('[data-role="content"]').append(......);
    
    结论
    只要页面具有唯一的ID,那么是否具有相同内容的相同页面并不重要。

    我刚刚花了6个小时调试了一个重复ID非常重要的问题

    每一页都有一个标题,标题上有一个弹出菜单面板的按钮。每一页都有一个id“navpanel”

    现在有一页想隐藏按钮。在pageShow活动中,它说

    $("#navpanel").toggle(user.isRegistered());
    

    但是选择器找到的id为navpanel的元素是我们刚刚离开的页面中的元素,而不是我们要导航到的元素,其结果非常难以追踪(我在早上2:14写这篇文章时刚刚计算出来)。

    感谢您明确指出,只有页面id才需要唯一。不是其他ID。