无法在mvc4中使用onclick从锚标记获得调用

unable to get call from anchor tag using onclick in mvc4

本文关键字:调用 onclick mvc4      更新时间:2023-09-26

cshtml code

<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);"怎么了

正如你所说:

my function is in ready

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

getGroupType(id){
  // all the stuff
}
$(function(){
   // all other stuff
});

我希望你得到错误:

ReferenceError: getGroupType is not defined

因为我怀疑你的JavaScript代码出现在文件中比你的onclick属性晚。

当使用属性时,确保在属性之前定义函数…通常在<head>。话虽如此,通常的做法是稍后包含脚本并在脚本中附加事件,而不是使用属性。

同时,确保你的函数没有被包装在另一个函数中。JavaScript是有函数作用域的,一个包在另一个函数中的函数不能从全局作用域调用。

这些都假设id实际上是一个数字。如果id是字符串,也要记得用引号括起来。guid必须像JavaScript中的字符串一样对待…

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

您需要将参数用单引号括起来。

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