2

对JQM有以下疑惑:

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

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

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

我对此感到担忧,因为我使用相同的 html 文件使用 ajax 将其加载到不同的页面中。由于在这种情况下 id 将相同,并且它们都将在 DOM 中,有什么影响。或者,我应该通过更改 id 创建一个单独的文件并使用它。

4

2 回答 2

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 都没有关系。同样,您可以使用与已加载到 DOM 中的页面具有相同 id 的页面加载另一个 html 文件,但是一旦您尝试访问其中的某些内容,您将访问最初存储到 DOM 中的页面。所以像这样使用它没有意义。

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

这一切都可能令人困惑,但请耐心等待。为了解决这个问题,jQuery 开发人员创建了一个独特的选择器,可以帮助您获得一个活动页面。这很重要,因为如果我们的页面内容在页面之间是相同的(当然页面 id 是唯一的),我们只能通过某些活动页面选择器访问或当前页面内容。

例子:

$.mobile.activePage

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

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

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

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

结论

只要页面具有唯一的 ID,您是否拥有具有相同内容的相同页面并不重要。

于 2013-05-26T22:06:49.890 回答
1

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

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

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

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

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

于 2014-09-25T01:15:28.750 回答