在Salesforce的jQuery Mobile示例中,應用程序中的this page將重新使用ID FirstName,LastName和Email。在多頁面模板中重用ID是否合適?
<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>
我知道這是無效的HTML多次使用相同的ID。這是一個HTML文檔,但在多頁面模板中,每個<div data-role="page">
在技術上都是一個單獨的頁面。
所以我的問題是:這是一個適當的方法?如果不是,沒有冗餘代碼,避免重用id的最優雅的方法是什麼?在這種情況下,我認爲使用相同的id可以方便地根據你所在的頁面選擇表格元素,而無需爲每個頁面指定單獨的事件處理程序(但也許它只是複製和粘貼錯誤)。我知道使用類是明確的解決方案,所以我猜想問題的一部分是:如何選擇,例如,只在當前div /頁的類名Firstname?也許這個問題 - 「這個有效的HTML?」可能看起來很明顯,我問這個問題的原因是我認爲如果是在Salesforce的例子中,我可能錯過了一些東西。
編輯2:我剛剛發現這個鏈接http://forum.jquery.com/topic/using-ids-in-jquery-mobile-pages關於這個問題的一個很好的討論。
它是無效的,但是,你可以隨時使用,將最終被傳遞到queryselectorall選擇,如'#thepageid#theinputid'與他們合作。很明顯,效率不高,這是一個移動環境,效率非常重要,所以我建議找到另一種方式。 –