javascript
  • jquery
  • asp.net-mvc
  • attributes
  • click
  • 2013-01-18 2 views 8 likes 
    8

    Ich habe HTML-Elemente in foreach. Ich kann diesen Namen nicht manuell angeben. I verwendet id='[email protected](item.Id)' Id zu setzen:Wie ID festlegen und dynamisch in MVC 4 Rasierer verwenden?

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

    Aber jetzt brauche ich .click() Funktion für eash <a> Link Meine einige Operationen zu tun. Wie schreibe Klickfunktion für dynamische IDs?
    Ich habe dies, aber es funktioniert nicht:

    $("#[email protected](item.Id)").click(function() { 
    
        //any operation 
    
    }); 
    

    Edit:

    <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> 
    

    Dieser Klick() -Funktionen Anfrage Iteration zählt mal an die Steuerung zu senden. Was ist falsch in meinem Code?

    +0

    '$ ('a'). Click();' kann das tun. Eigentlich ist dein Zweck nicht klar. Warum möchtest du nur eine bestimmte ID auswählen, um das Zeug zu machen? – Jai

    +0

    Zum Beispiel, dass annehmen, akzeptieren Sie die Struktur in http://stackoverflow.com. Die Idee, die ich brauche, ist ähnlich, um ein beliebiges Element aus der Liste der Antworten auszuwählen, das dynamisch ausgerichtet ist. –

    Antwort

    11

    Ich würde vorschlagen, Attribute zu verwenden.

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

    dann in JS ...

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

    diese Weise können Sie auf alle ähnlichen Verbindungen verdrahtet sind (z select-list) ohne separate Handler-Funktion für jeden #id.

    +0

    Danke dafür, es funktioniert, aber wenn ich auf einen Link klicke, funktioniert der Vorgang viele Male, bis foreach endet ... –

    +0

    Überprüfen Sie Ihren Ausgabecode (HTML). Sie haben wahrscheinlich die JS-Verbindung aufgebaut, die ich jede Iteration durch die Schleife geschickt habe. Mit meinem Code müssen Sie nur JS EINE ZEIT hinzufügen, d. H. Nach der Schleife, und dann wird es für alle Links funktionieren. –

    +0

    Ich habe meine Frage bearbeitet. bitte sehen. Ausgabecode ist richtig. Werte der Daten-ID-Zeile 1, 2, 3. id = 'ProductSelect _ @ (item.Id)' funktioniert auch, aber Anfrage geht an den Controller viele Male (Iteration zählt) –

     Verwandte Themen

    • Keine verwandten Themen^_^