2013-05-15 2 views
7

У меня есть @ Html.DropDownList, который вызывает функцию jquery. Но он не смог вызвать функцию. У меня есть tried-MVC4 view не обнаруживает JQuery

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

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

и

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 

Что здесь не так?

+0

Что ошибка? Вы видите какие-либо ошибки в консоли? Вы включаете 'jQuery' на свою страницу? –

+0

Также вы должны написать '$ ('. Test')' вместо '$ ('test')'. Потому что вы хотите получить доступ к элементам с классом 'test'. –

+0

@ Mojtaba- Я обновил свой вопрос. На самом деле я пытался с $ ('. Test'). Я не получаю никаких ошибок. Это не вызов функции! – Sandy

ответ

4

Ваш селектор JQuery неправильно, используйте ID-селектор вместо:

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

Несколько более возможные ошибки:

  • JQuery не ссылается на этой странице. Чтобы проверить это, откройте firebug, hrome dev tools или IE dev tools и проверьте, есть ли у вас какие-либо ошибки.
  • Общей ошибкой является включение $ (document) .ready внутри представления и только ссылка jQuery внизу. Это вызовет ошибку, потому что в этот момент $ неизвестно. Возможные решения:
    1. Переместить код во внешний файл и ссылки, что файл после включения JQuery
    2. Переместите декларацию Jquery в головной секции (не рекомендуется, поскольку это приведет к замедлению загрузки страницы)
+0

нет, его моя ошибка, когда я скопировал переполнение стека, на самом деле. здесь. – Sandy

+0

Вы видите ошибки в журнале консоли? Вы включаете jQuery перед вызовом $ (document) .ready? – Kenneth

+0

Я не получаю никаких ошибок в консоли, и я уже включил '@ Scripts.Render (" ~/bundles/jqueryval ")' – Sandy

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

$('.test').change(function() { // в этой части и нужно добавить '.' в тесте

у забыл т шляпа это класс.

+0

вы хорошо поработали @ Vond Ritz .. но Sandy не вижу, что вы делаете .. – Olrac

+0

Я обновил свой вопрос. на самом деле я пробовал с '$ ('. test')' – Sandy

0

Working FIDDLE Demo

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

его не работает :( – Sandy

+0

Вы бы написали ** сгенерированный код ** для вашего '@ Html.DropDownList'? –

+0

Я не получил вас Mojtaba – Sandy

1

Вы также можете использовать следующий код.

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

Добавьте следующую строку где-то в представлении или макете:

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

Кроме того, ваш селектор не является правильным. У вас нет элемента HTML с class="test".

Попробуйте вместо этого $('#PropertyContent').

0

Пожалуйста, попробуйте получить dropDownList по его идентификатору, как приведенный ниже код. я получил рабочий пример для вас: http://jsfiddle.net/pzzQu/

$(document).ready(function() { 
    $('#PropertyContent').change(function(){ 
     alert('1'); 
    }); 
}); 
Смежные вопросы