mvc下拉变化没有触发jquery

时间:2014-05-08 19:35:37

标签: jquery asp.net-mvc drop-down-menu

我有一个下拉列表:

@Html.DropDownList("CharacterID")

以及以下jQuery:

$(document).ready(function(){
    $("#CharacterID").on(change, "#CharacterID", (function () {
        alert("I've Changed");
        //var id = $('#CharacterID').val();
    }));
});

当我更改其中一个下拉选项时,它不会触发。

我该怎么做才能解决这个问题?我已经查看了类似的问题和答案,并尝试将这些问题和答案合并,但它们还没有奏效。

以下是我在JSFiddle中运行它时会发生什么:http://jsfiddle.net/vgMdF/

5 个答案:

答案 0 :(得分:2)

两个问题:

  1. change是一个字符串,而不是一个魔术变量。在它周围添加报价。
  2. 还需要在CharacterID的任何anscestor上调用on方法。对于大多数情况,最好使用$(document).on()
  3. $(document).ready(function(){
        $(document).on("change", "#CharacterID", (function () {
            alert("I've Changed");
            //var id = $('#CharacterID').val();
        }));
    });
    

    你可以在这里看到这个:http://jsfiddle.net/h3q5d/

    使用整页和jquery加载 - 它也有效:http://jsfiddle.net/vgMdF/1/

答案 1 :(得分:1)

您需要在演示中包含jQuery,它应该按预期工作。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

对于jsFiddle,您可以从Extensions & Frameworks标签中选择jQuery版本。

<强> Updated Fiddle

答案 2 :(得分:0)

你可以试试这个:

$(document).ready(function(){
  $("#CharacterID").on('change',function () {
    alert("I've Changed");
    //var id = $('#CharacterID').val();
  });
});

答案 3 :(得分:0)

这里的问题是,你的jsfiddle从未包含 jquery ,因为它从未运行

检查这个小提琴 http://jsfiddle.net/qg5Dh/1/

$(document).ready(function () {
    $(document).on("change", "#CharacterID", (function () {
        alert("I've Changed");
        //var id = $('#CharacterID').val();
    }));
});

效果很好,代码工作正常

答案 4 :(得分:0)

试试这个:

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