重复的ID影响

时间:2013-05-26 19:18:56

标签: javascript jquery jquery-mobile

在JQM中有以下疑问:

1.如果我们在单独的html文件中使用重复的id,那么jquery mobile会产生什么影响。

  1. 假设我们在单独的html文件中有重复的ID,但如果我们没有将id用于任何内容,它是否会影响。

  2. 如果我们通过某种层次结构在javascript中使用唯一选择器,是否可以在单独的html文件中包含重复的ID

  3. 我担心这个,因为我使用相同的html文件使用ajax在不同的页面中加载它。由于在这种情况下ID将是相同的,并且它们都将在DOM中,因此会产生什么影响。或者,我应该通过更改ID并使用它来创建单独的文件。

2 个答案:

答案 0 :(得分:4)

简介:

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

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

答案:

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

  2. 与答案1类似,只要页面ID是唯一的,如果您在单独的html文件或一个大型html文件中具有相同的ID,则无关紧要。同样,您可以加载另一个html文件,其中包含与已加载到DOM中的页面具有相同ID的页面,但只要您尝试访问其中的某些内容,您将访问最初存储在DOM中的页面。所以没有必要像这样使用它。

  3. 再次,只有规则是页面必须具有唯一的ID。只要它们是页面容器的子代,您就可以拥有尽可能多的其他相同ID。

  4. 这一切可能令人困惑,但请耐心等待。为了解决这个问题,jQuery开发人员创建了一个独特的选择器,可以帮助您获得活动页面。这很重要,因为如果我们使用某些活动页面选择器进行操作,那么只有页面内容在页面中相同(当然页面标识是唯一的)才能访问或当前页面内容。

    示例:

    $.mobile.activePage
    

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

    $.mobile.activePage.find('[data-role="content"]').append(......);
    

    然后,如果您想访问其他页面相同的内容,您可以这样做:

    $('#pageID').find('[data-role="content"]').append(......);
    

    结论

    只要页面具有唯一ID,您是否拥有相同内容的页面无关紧要。

答案 1 :(得分:1)

我花了6个小时调试重复ID很重要的问题。

每个页面都有一个标题,其中包含一个弹出菜单面板的按钮。每个页面都给它id'navpanel'。

现在有一页要隐藏按钮。在pageShow事件中它说

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

但是选择器找到的具有id navpanel的元素是我们刚刚离开的页面中的元素,而不是我们导航到的那个元素,非常难以追踪后果(我写的是2 :早上14点刚刚完成了它。)