2011-12-22 96 views
1

我做了一个jQuery Mobile(1.0 final)应用程序,并且我遇到了闪烁问题。我知道这是一个目前在jQM中定义的bug,但我想看看我能做些什么来解决这个问题。jquery手机:页面内的重复ID好吗?

here线程提到以下几点:使用相同#ID不是在一个页面, 当您使用一个页面模板方法,它不是不可能一次时,可能发生

闪烁。 所以请务必不要多次使用#号。

这对我来说有点模棱两可......很显然,因为jQM在进行AJAX加载,所以任何时候都可能在DOM中有多个页面。在我的情况下,我的页面级别ID全部是唯一的,但页面内使用的几个ID不是(例如,data-role=content div的每个页面的ID为#mainPageContent)。

这是一个可以接受的行为,还是我的ID应该是全球唯一的?

PS:对不起,如果这是一个骗局,我发现了几个类似于这个问题的stackoverflow帖子,但没有什么我觉得真的专门回答这个问题。

+0

,因为这一切都加载到DOM我会怀疑的Id的一个冲突。恕我直言,我会重构每个页面的Id,并使它们独一无二,以符合HTML5标准 – 2011-12-22 14:11:15

+0

,感谢你们两位的回答。这就是我的想法,我只是想在重新投入时间之前检查一下。 :) – rbdrbd 2011-12-24 22:22:32

回答

1

你的ID 必须在整个你的整个jQuery Mobile的网站独特,以确保同一ID不追加到DOM为已存在的元素。

一个良好的工作,围绕这个(因为你已经有了独特的data-role="page"的ID是在你的网页来改变ID的其余类:

<div data-role="page" id="home"> 
    <div class="mainPageContent" data-role="content"></div> 
</div> 

这样,您就可以轻松地定位与CSS元素/ JS,使您的网站全球变化或针对特定页面:

GLOBAL

<style> 
.mainPageContent { 
    color : gold; 
} 
</style> 
<script> 
$(document).delegate('.mainPageContent', 'click', function() { 
    //... 
}); 
</script> 

页特殊

<style> 
#home > .mainPageContent { 
    color : magenta; 
} 
</style> 
<script> 
$(document).delegate('#home > .mainPageContent', 'click', function() { 
    //... 
}); 
</script> 
2

没有重复的Id's不好,因为Id属性是一个唯一的标识符。

3.2.3.1id属性

id属性指定其元素的唯一标识符(ID)。 值必须在元素的主子树 中的所有ID中唯一,并且必须至少包含一个字符。该值不能包含任何空格字符 。

一个元素的唯一标识符可以被用于各种目的, 最显着的方式来链接到使用 片段标识符一个文档的特定部分,以此为目标元素时的脚本, 和作为从CSS设计特定元素的方式。

如果该值是不是空字符串,用户代理必须在 元素与给定值(确切地,包括任何空格字符) 的ID匹配的目的,元素的家庭树 (如内中选择关联CSS或 DOM中的getElementById()方法)。

标识符是不透明的字符串。特定的含义不应该是从id属性的值派生的 。

如果其他机制(例如DOM核心方法)能够以不与id属性冲突的 方式设置元素ID,则此规范不排除具有多个ID的元素。

ID IDL属性必须反映ID内容属性。