2012-07-08 83 views
1

我有一個asp.net中繼器內的下列輸入傳遞ID點擊事件

<div class="detailsItem"> 
    <input type="button" class="saveCommand" value="Save"/> 
</div> 

然後我的document.ready內我綁定點擊功能

<script type="text/javascript"> 

    $(document).ready(function() { 

     $('.saveCommand').live('click', function() { 
      var cur = $(this); 
      saveItem(cur.closest('div.detailsItem')); 
     }); 

    }); 

當我結合我中繼器,我希望能夠在調用click函數時包含一個ID。類似的東西:

<input type="button" onclikc="save(this,<%#((CustomViewItem)Container.DataItem).Id%>" value="Save"/> 

任何想法如何結合兩種風格的綁定?

+0

'live'已被棄用。使用[.delegate()](http://api.jquery.com/delegate/)或[.on()](http://api.jquery.com/on/) – Andreas 2012-07-08 20:34:41

+1

您可以添加一個'data'屬性例如。 http://ejohn.org/blog/html-5-data-attributes/ – Styxxy 2012-07-08 20:36:05

+0

如果你使用jQuery 1.7+,最好使用'.on()'而不是'.delegate()'。 – 2012-07-08 20:48:58

回答

3

訪問它,我會建議你使用data attribute。上jQuery中的data()方法

<!-- 
    <div class="detailsItem" data-id="<%#((CustomViewItem)Container.DataItem).Id%>"> 
--> 
<div class="detailsItem" data-id="YourIdHere"> 
    <input type="button" class="saveCommand" value="Save"/> 
</div> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.saveCommand').on('click', function() { 
      var cur = $(this); 
      var detailsItem = cur.closest('div.detailsItem'); 
      alert(detailsItem.data("id")); 
      saveItem(detailsItem); 
     }); 
    }); 
</script> 

更多信息:http://docs.jquery.com/Data

+0

我想我已經使用自定義屬性來解決過去類似的問題。我想這將是*正確*的方式來做到這一點。謝謝! – earthling 2012-07-08 21:35:50

3

您可以使用新data-*在事件處理程序屬性

<input type="button" data-id="<%#((CustomViewItem)Container.DataItem).Id%>" value="Save"/> 

那麼你就可以

cur.data("id") 
+0

感謝您的提示! – earthling 2012-07-08 21:36:46

0

您可以將ID傳遞給您的中繼器的項目模板中的保存功能。

<itemTemplate> 
    <input type='button' onclick='save(<%# Eval("Id")); %>' value='Save' /> 
</itemTemplate> 
0

試試這個

<ItemTemplate> 
<div class="detailsItem"> 
<input type="button" class="saveCommand" onclick='save(<%# Eval("Id") %>);' value="Save"/> 
</div> 
</ItemTemplate>