2013-01-18 9 views
8

foreachにhtml要素があります。 ID名を手動で宣言することはできません。 私はIDを設定するid='[email protected](item.Id)'を使用:IDを設定してmvc 4カミソリで動的に使用する方法は?

foreach (var item in Model) 
    { 
    <a href="#" id='[email protected](item.Id)' class="select-link">Select this</a> 
    } 

しかし、今、私はいくつかの操作を行うにはeash <a>リンクについて.click()機能を必要としています。どのように動的IDの書き込み機能を書くか?
私はこれをチェックし、それは動作しません:

$("#[email protected](item.Id)").click(function() { 

    //any operation 

}); 

編集:

<script> 
    $(document).ready(function() { 
     $('.select-link').click(function() { 
      var id = $(this).attr('data-id'); 

      url = '@Url.Action("SelectThis", "Product")'; 
      var data = { id: '@Model.Id' }; 
      $.post(url, data, function (result) { 
       if (result.success) { 
        alert("Thanks"); 
       } 
       else { 
        alert("Problem occured..."); 
       } 
      }); 

     }); 
    }); 
</script> 

このクリック()関数は、反復回数の時間をコントローラに要求を送信します。私のコードで何が間違っていますか?

+0

'$( 'a')。click();'それを行うことができます。実際にあなたの目的は明確ではありません。なぜあなたはその物をするために特定のidだけを選択したいのですか? – Jai

+0

例えば、その答えを受け入れる答えはhttp://stackoverflow.com。私が必要とするアイデアは、動的に並んでいる回答のリストから項目を選択するのに似ています。 –

答えて

11

属性を使用することをお勧めします。 JSで、その後

foreach (var item in Model) 
    { 
    <a href="#" data-id='@item.Id' id='[email protected](item.Id)' class="select-link">Select this</a> 
    } 

...

$('.select-link').click(function() 
{ 
var id = $(this).attr('data-id'); 
}); 

あなたは、各#IDに個別のハンドラ関数のない(例えばselect-list)全て同様のリンクに有線接続しているこの方法。

+0

これはありがとう、それは動作しますが、リンクをクリックすると、foreachが終了するまで何度も操作が... –

+0

出力コード(HTML)を確認してください。あなたはおそらくループを介して各繰り返しを投稿したJSを配線しています。私のコードでは、JS ONE TIMEをループの後に追加するだけで済み、すべてのリンクで動作します。 –

+0

私は自分の質問を編集しました。参照してください。出力コードは正しいです。 id = 'ProductSelect _ @(item.Id)'も動作しますが、要求はコントローラに何回も送られます(反復回数) –

関連する問題