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

    Mam elementy html w foreach. Nie mogę ręcznie podać nazwy identyfikatora. użyłem id='[email protected](item.Id)' ustawić Id:Jak ustawić ID i używać go dynamicznie w maszynce do golenia mvc 4?

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

    Ale teraz muszę .Kliknij() funkcję eash <a> linku do mojej niektórych operacji. Jak funkcja zapisu do dynamicznych identyfikatorów?
    sprawdziłem tego, ale to nie działa:

    $("#[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> 
    

    Ten click (funkcje) wysłać zapytanie do kontrolera iteracji zlicza razy. Co jest nie tak w moim kodzie?

    +0

    '$ (" a "). Click();' może to zrobić. W rzeczywistości twój cel nie jest jasny. Dlaczego chcesz wybrać tylko konkretny identyfikator, aby to zrobić? – Jai

    +0

    Załóżmy na przykład, że akceptujemy strukturę struktury w http://stackoverflow.com. Pomysł, którego potrzebuję, jest podobny, aby wybrać dowolny element z listy odpowiedzi, który jest dynamicznie ustawiony. –

    Odpowiedz

    11

    Proponuję użyć atrybutów.

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

    następnie w JS ...

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

    ten sposób jesteś podłączony do wszystkich podobnych linków (np select-list) bez osobnej funkcji obsługi dla każdego ID.

    +0

    dziękuję za to, działa, ale po kliknięciu dowolnego łącza, operacje działają wiele razy, aż kończy się foreach ... –

    +0

    Sprawdź kod wyjściowy (HTML). Prawdopodobnie podłączasz JS, który opublikowałem każdą iterację w pętli. Z moim kodem wystarczy dodać JS ONE TIME, czyli po pętli, a następnie zadziała dla wszystkich linków. –

    +0

    Edytowałem moje pytanie. proszę zobaczyć. kod wyjściowy jest prawidłowy. wartości id danych id 1, 2, 3. id = "ProductSelect _ @ (item.Id)" również działa, ale żądanie trafia do kontrolera wiele razy (liczba iteracji) –

     Powiązane problemy

    • Brak powiązanych problemów^_^