2013-05-15 13 views
7

Ho un @ Html.DropDownList che chiama una funzione jquery. Ma non è riuscito a chiamare la funzione. devo tried-La vista MVC4 non rileva JQuery

$(document).ready(function() { 
    $('.test').change(function() { 
     alert("1");    
    }); 
}); 

@Html.DropDownList("PropertyContent", ViewBag.PropertyList as List<SelectListItem>, new { @class="test"}) 

e

function test() { 
     alert("1"); 
    } 

@Html.DropDownList("PropertyContent", ViewBag.PropertyList as List<SelectListItem>, new { onchange="test();"}) 


@Scripts.Render("~/bundles/jqueryval") is also included in the view 

Cosa c'è di sbagliato qui?

+0

Qual è l'errore? Vedi qualche errore nella console? Includi 'jQuery' nella tua pagina? –

+0

Inoltre devi scrivere '$ ('. Test')' invece di '$ ('test')'. Perché vuoi accedere agli elementi con la classe 'test'. –

+0

@ Mojtaba- Ho aggiornato la mia domanda. In realtà ho provato con $ ('. Test'). Non ho alcun errore. Non sta invocando la funzione! – Sandy

risposta

4

vostro selettore jQuery è sbagliato, utilizzare l'ID selettore posto:

$(document).ready(function() { 
    $('#PropertyContent').change(function() { 
     alert("1");    
    }); 
}); 

Un paio di errori possibili:

  • jQuery non si fa riferimento nella pagina. Per controllare questo, apri firebug, chrome dev tools o IE dev tools e controlla se hai errori
  • Un errore comune è quello di includere $ (documento) .ready nella vista e solo riferimento jQuery nella parte inferiore. Questo genererà un errore perché a quel punto non è noto lo $. Possibili soluzioni:
    1. Spostare il codice in un file esterno e riferimento quel file dopo l'inserimento jQuery
    2. Spostare il dichiarazione jQuery per la sezione testa (sconsigliato in quanto rallenta il caricamento della pagina)
+0

no, è colpa mia quando ho copiato l'overflow dello stack, in realtà. è lì. – Sandy

+0

Vedete errori nel registro della console? Stai includendo jQuery prima della chiamata a $ (document) .ready? – Kenneth

+0

Non ricevo alcun errore in console e ho già incluso '@ Scripts.Render (" ~/bundles/jqueryval ")' – Sandy

3
$(document).ready(function() { 
    $('.test').change(function() { 
     alert("1");    
    }); 
}); 

$('.test').change(function() { // su questa parte u bisogno di aggiungere '.' in prova

u t dimenticato cappello è una classe.

+0

hai fatto un buon lavoro @Vond Ritz..ma Sandy non vede quello che fai .. – Olrac

+0

Ho aggiornato la mia domanda. in realtà ho provato con '$ ('. test')' – Sandy

0

Working FIDDLE Demo

$(function() { 
    $('#PropertyContent').change(function() { 
     alert("1"); 
    }); 
}); 
+0

non funziona :( – Sandy

+0

Scriveresti il ​​codice ** generato ** per il tuo '@ Html.DropDownList'? –

+0

Non ti ho preso Mojtaba – Sandy

1

È inoltre possibile utilizzare il codice seguente.

$(document).ready(function() { 
    $(".test").live("change",function() { 
     alert("1");    
    }); 
}); 
0

Aggiungere la seguente linea da qualche parte nella vista o il layout:

@Scripts.Render("~/bundles/jquery") 

anche il vostro selettore non è corretto. Non hai elementi HTML con class="test".

Prova $('#PropertyContent') invece.

0

Si prega di provare a ottenere il dropDownList dal suo ID come il codice qui sotto. ho ottenuto un esempio di lavoro per voi: http://jsfiddle.net/pzzQu/

$(document).ready(function() { 
    $('#PropertyContent').change(function(){ 
     alert('1'); 
    }); 
}); 
Problemi correlati