【问题标题】:jQuery .click function not working only for first linkjQuery .click 功能不适用于第一个链接
【发布时间】:2014-03-10 05:36:44
【问题描述】:

我的剃刀视图中有简单的 foreach 循环:

@foreach (var item in Model.materijali) {
    <tr>
        <td>
            @Ajax.ActionLink(item.sifra_materijala,   
                                "DetaljiMaterijala", 
                                "NormativiMaterijala", 

                                new { materijal = item.sifra_materijala.ToString() },
                                new AjaxOptions { HttpMethod = "GET" },
                                new { id = "mylink" })
        </td>
</tr>

还有一个jQuery函数:

<script type="text/javascript">

    $(function () {
        $('#mylink').click(function () {
            $.post(this.href, function (json) {
                var json = $.parseJSON(data.responseText);
                $("#sifra_materijala").val(json.sifra_materijala.val())
                alert(json.sifra_materijala);
            });
            return false;
        });
    });
</script>

这会调用控制器操作并返回一些我需要在局部视图上显示的结果。

当我单击由foreach 循环生成的任何href 链接时,控制器操作会定期调用并执行,除了第一个,当什么都没有发生时......

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 用class代替id
  • “任何链接”是什么意思,ID 是唯一的,您应该只有一个具有该 ID 的锚 `
  • @adneo 所有的 href 都是
  • @onedevteam.com 您是说所有链接的 ID 相同吗?如果是这样,那不是有效的 HTML - ID 应该是唯一的。一旦一个元素的 ID 为 myid,则 DOM 中的其他元素都不应拥有该 ID。

标签: javascript jquery razor


【解决方案1】:

我从未做过任何点网编程,更不用说使用剃刀视图了,但据我了解,@Ajax.ActionLink 会生成一个 &lt;a&gt; 元素 以及在单击链接时进行 ajax 调用的 JavaScript .

您添加了第二个 ajax 调用,但仅针对第一个 &lt;a&gt; 元素。它仅适用于第一个,因为即使您可能有多个具有 id="mylink"&lt;a&gt; 元素,id 的值也应该是唯一的。您提供的处理程序也有错误:它引用了data.responseText,但data 未定义。

不要添加您自己的点击处理程序,而是为@Ajax.ActionLink 调用的ajaxOptions 参数提供一个OnSuccess 回调函数。并去掉new { id = "mylink" }参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    相关资源
    最近更新 更多