无法使用mvc4中的onclick从锚标记中获取调用

时间:2014-06-10 18:04:02

标签: javascript jquery html asp.net-mvc-4

cshtml代码

<div class="span3">
    @for (var i = 0; i < Model.GroupNames.Count; i++)
    {
        <ul>                 
            <li>
                @{
                    var item = Model.GroupTypeNames[i];
                    var selected = i == 0 ? " class=\"selected\"" : "";
                }

                <a onclick="getGroupType(@item.Id);" data-option-value="*"@Html.Raw(selected)>@item.TypeName</a>
            </li>
        </ul>
    }
</div>

jquery代码

function getGroupType(id) {
    debugger;
    $.getJSON( "Groups/Get" + id, function (data) {
        $(".span9").html($("#GroupTemplate").removeData());
        $.each(data, function (index, value) {
            if (value.Id != undefined) {
                $("#GroupTemplate").tmpl(value).appendTo(".span9");
            }
        });

        $('#circle').css("opacity", "0.5");
    });
}

无法在这里接听电话 但是当我尝试使用onclick="alert('Hello');"时,它正在完美地运作

onclick="getGroupType(@item.Id);"

有什么问题

3 个答案:

答案 0 :(得分:1)

我希望你得到错误:

  

ReferenceError:未定义getGroupType

因为我怀疑您的JavaScript代码出现在文件的后面,而不是onclick属性。

使用属性时,请确保在属性之前定义函数...通常在<head>中。说到这一点,通常的做法是稍后包含脚本并将事件附加到脚本中,而不是使用属性。

另外,请确保您的功能未包含在其他功能中。 JavaScript是功能范围的,包含在另一个函数中的函数不能从全局范围调用。

这一切都假设id实际上是一个数字。如果id是一个字符串,请记住将其包装在引号中。必须将GUID视为JavaScript中的字符串......

onclick="getGroupType('@item.Id');"

答案 1 :(得分:1)

正如你评论的那样:

我的功能已准备好

所以我认为这是一个范围问题,因为你的onclick处理程序不在ready函数中,所以你的函数getGroupType(@item.Id);不可用,而是你可以把它放在gloabal范围之外

getGroupType(id){
  // all the stuff
}

$(function(){
   // all other stuff
});

答案 2 :(得分:0)

您需要使用单引号包装参数。

onclick="getGroupType('@item.Id');"