1 回答

TA貢獻1844條經(jīng)驗 獲得超8個贊
好吧,從技術上講,RepeaterControl 將自行管理 ID,如果您嘗試連接更多唯一 ID 以使其更加獨特,那將是已經(jīng)解決的問題的開銷。
看看你有沒有Repeater這樣一個簡單的控件,里面有5個項目,我用一個簡化的Repeater來解釋一下:
<asp:Repeater runat="server" ID="MyRepeater">
<ItemTemplate>
<div runat="server" draggable="true" id="mySampleDiv"></div>
</ItemTemplate>
</asp:Repeater>
然后,它將以這種方式管理 div,html就像這樣:
<div draggable="true" id="MyRepeater_mySampleDiv_0"></div>
<div draggable="true" id="MyRepeater_mySampleDiv_1"></div>
<div draggable="true" id="MyRepeater_mySampleDiv_2"></div>
<div draggable="true" id="MyRepeater_mySampleDiv_3"></div>
<div draggable="true" id="MyRepeater_mySampleDiv_4"></div>
在id每一個div的屬性中runat="server",它都有id的三部分來使它獨一無二,
家長身份證
控件的ID
和項目索引
這意味著,這個問題,你正在努力連接 ids 將是一個開銷,因為它總是唯一的。
現(xiàn)在,如果我們使用該屬性,從jquery/中的元素獲取船員 ID 的問題就非常簡單,因為我認為此信息不是那么敏感。javascriptdata-
做這樣的事情:
<asp:Repeater runat="server" ID="MyRepeater">
<ItemTemplate>
<div runat="server" draggable="true" id="mySampleDiv" class="mydiv" data-crewid='<%# Eval("CrewId") %>'></div>
</ItemTemplate>
</asp:Repeater>
生成html的 withdata-crewid屬性將是這樣的:
<div draggable="true" id="MyRepeater_mySampleDiv_0" data-crewid="1000"></div>
<div draggable="true" id="MyRepeater_mySampleDiv_1" data-crewid="1001"></div>
<div draggable="true" id="MyRepeater_mySampleDiv_2" data-crewid="1002"></div>
<div draggable="true" id="MyRepeater_mySampleDiv_3" data-crewid="1003"></div>
<div draggable="true" id="MyRepeater_mySampleDiv_4" data-crewid="1004"></div>
這樣,您就不需要管理元素的 ID,因為您主要關心的是獲取crewid特定元素何時被拖放或放下的信息。
而在 中jquery,你可以這樣得到它:
<script>
$(document).ready(function(){
$('.mydiv').on('dragstart', function(){
var crewId = $(this).attr('data-crewid');
// do something with the crewId
});
});
</script>
請注意,我已將事件與類綁定,而不是與 id 綁定,然后從屬性中取回 crewid data-。
到目前為止,很明顯 div 的 id 在我的情況下并不重要,因為我只需要 crewid (您的場景可能不同)或設置的任何 id,所以,而不是連接然后將 id 拆分為獲取 crewid,我將 id 存儲在一個data-屬性中。哪個可以很好地存儲您擁有的 ID。
閱讀有關屬性的詳細信息data-:https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes
更新
如果你想從中的轉(zhuǎn)發(fā)器中獲取項目索引jquery,你也可以將它保存在另一個data-屬性中,如下所示:
data-itemindex='<%# Container.ItemIndex %>'
添加回答
舉報