2015-05-07 10 views
5

Come recuperare i valori da @for loop in jquery. Ogni valore all'interno di loop deve avere un ID diverso e jquery dovrebbe ottenere ciascun ID separato. My for loop,Recupero dei valori dal ciclo for in jquery

@for (int i = 0; i < searchList.Count;i++) 
{ 
    <label for="[email protected]"><input type="checkbox" id="[email protected]"/>@searchList[i] </label> 
} 

mio jquery che non sta aiutando,

$("#[email protected]").on("click", function() { 
    var currentChk = $(this); 
    var propCheck = currentChk.prop("checked"); 
    if (propCheck) { 
     debugger; 
     var valChk = $("#[email protected]").val(); 
     alert(valChk); 
    } 
}); 

Grazie in anticipo ...

+0

io sono totalmente confuso! vuoi generare etichette e input usando jQuery per loop? –

risposta

2

È possibile utilizzare Attribute Starts With Selector di impegnare la manifestazione.

$("[id^=input]").on("click", function() { 
    var currentChk = $(this); 
    var propCheck = currentChk.prop("checked"); 
    if (propCheck) { 
     debugger; 
     var valChk = $("#[email protected]").val(); 
     alert(valChk); 
    } 
}); 

come ID di entrambi etichetta e input-casella inizia con l'evento click 'ingresso' legherà ad entrambi. Se si desidera limitare è possibile aggiungere il tipo al selettore, ad esempio si desidera solo sulla casella di controllo è possibile modificare il selettore come sotto.

$("input[id^=input]").on("click", function() {... 

o

$(":checkbox[id^=input]").on("click", function() {... 

Se si assegna una classe per il controllo che si desidera allegare evento quindi è possibile utilizzare selettore di classe per associare l'evento.

@for (int i = 0; i < searchList.Count;i++) 
{ 
    <label for="[email protected]"><input type="checkbox" class="chk-class" id="[email protected]"/>@searchList[i] </label> 
} 


$(".chk-class").on("click", function() {... 

Modifica Come Mohamed-Yousef ha sottolineato che si dovrebbe usare preferibilmente currentChk o $(this) invece di $("#[email protected]") nella dichiarazione $("#[email protected]").val(); come @i non sarà il valore sostituito da C# ciclo, ma verrà aggiunto come stringa letterale.

Come ulteriore nota è possibile utilizzare JavaScript native, ove possibile ed adatto per esempio userei this.checked al posto di currentChk.prop ("controllato") per ottenere la migliore performance, la leggibilità e la semplicità.

$("[id^=input]").on("click", function() { 
    if (this.checked) 
    { 
     //your code 
    } 
    else 
    { 
     //your code 
    }  
}); 
+3

$ ("# input @ i"). Penso che dovrebbe essere $ (this) o currentChk :) –

+0

Cosa succede con la riga 'valChk = $ (" # input @ i ")'? –

+1

Grazie @ Mohamed-Yousef, hai puntato correttamente. Ho risposto in ritardo perché ero via anche la risposta aggiornata. – Adil

0

se si vuole innescare onclick per tutti gli input

$("input").click(function() { 
    var currentChk = $(this); 
    var propCheck = currentChk.prop("checked"); 
    if (propCheck) { 
     var valChk = "Id:" + this.id + " Value:" + this.value; 
     alert(valChk); 
    } 
}); 
0
$("input:checkbox [id^=input]").click(function(){ 
     if ($(this).is(":checked")) { 
      var valChk = $("this").val(); 
      alert(valChk); 
     } 
    }); 

questa un'altra opzione è possibile utilizzare