在 Salesforce 的一个 jQuery Mobile 示例中,应用程序中的这个页面重新使用了 ID FirstName、LastName 和 Email。
<div data-role="page" data-theme="b" id="detailpage">
<div data-role="header">
<a href='#mainpage' id="back" class='ui-btn-left' data-icon='arrow-l'>Back</a>
<h1>Contact Detail</h1>
</div>
<div data-role="content">
<table>
<tr><td>First Name:</td><td id="FirstName"></td></tr>
<tr><td>Last Name:</td><td id="LastName"></td></tr>
<tr><td>Email:</td><td id="Email"></td></tr>
</table>
<form name="detail" id="detail">
<input type="hidden" name="Id" id="Id" />
<button data-role="button" id="editbtn">Edit</button>
<button data-role="button" id="deletebtn" data-icon="delete"
data-theme="e">Delete</button>
</form>
</div>
<div data-role="footer">
<h4>Force.com</h4>
</div>
</div>
<div data-role="page" data-theme="b" id="editpage">
<div data-role="header">
<a href='#mainpage' id="back" class='ui-btn-left' data-icon='arrow-l'>Back</a>
<h1 id="formheader">New Contact</h1>
</div>
<div data-role="content">
<form name="contact" id="form">
<input type="hidden" name="Id" id="Id" />
<table>
<tr><td>First Name:</td><td ><input name="FirstName" id="FirstName"
data-theme="c"/></td></tr>
<tr><td>Last Name:</td><td ><input name="LastName" id="LastName"
data-theme="c"/></td></tr>
<tr>
<td>Email:</td>
<td><input name="Email" id="Email"
data-theme="c"/></td>
</tr>
</table>
<button data-role="button" id="actionbtn">Action</button>
</form>
</div>
我知道多次使用相同的 id 是无效的 HTML。这是一个 HTML 文档,但在多页模板中,每个<div data-role="page">
在技术上都是一个单独的页面。
所以我的问题是:这是一个正确的方法吗?如果不是,那么避免在没有冗余代码的情况下重用 id 的最优雅的方法是什么?在这种情况下,我假设拥有相同的 id 以便能够根据您所在的页面选择表格元素而不为每个页面指定单独的事件处理程序(但可能只是复制和粘贴错误)是很方便的。
编辑:我意识到使用类是明确的解决方案,所以我猜部分问题是:例如,如何选择当前 div/page 中的 Firstname 类?也许问题是——“这是有效的 HTML 吗?” 可能看起来很明显,我问这个问题的原因是我想如果在 Salesforce 的例子中我可能遗漏了一些东西。
编辑 2:我刚刚找到了这个链接http://forum.jquery.com/topic/using-ids-in-jquery-mobile-pages对这个问题进行了很好的讨论。