【问题标题】:Jquery select proper id inside foreach loopJquery在foreach循环中选择正确的ID
【发布时间】:2014-05-24 21:38:47
【问题描述】:

我有一个 foreach 循环,它在其中呈现大约 10 个不同的链接,它们都共享一个共同的 ID 和不同的 names ,当用户点击一个链接时,我希望 Jquery 执行我已经可以执行的特定功能。我遇到的问题是如何让 Jquery 注意到哪个链接被点击了;这是我的代码,它应该可以解决问题

jQuery

    <script>
    $(document).ready(function () {
        $("#mee").click(function (e) {
            if ($(this).text() == "[+]") {

                $("#mee").text("[-]");
            }
            else {
                $("#mee").text("[+]");
            }
        });
    });
</script>

页面

    foreach (var item in Model.IEThreadpost)
        {
             <a id="mee" style="color: #980000" name="@item.ThreadpostID" href="#">[+]</a>
           }

我知道这是可行的,因为循环的第一个元素总是正确响应,但所有其他元素都不起作用。如果您查看 foreach 循环,您将在名称中看到一个变量,它始终是一个整数,因此循环 id,name 将始终类似于

  • ID=mee 姓名= 5
  • ID=mee 姓名=23
  • ID=mee 姓名=11

话虽如此,我怎样才能更改上面的 Jquery 代码以包含正确的 Name 标识,以便在单击时正确链接起作用?

【问题讨论】:

    标签: jquery foreach


    【解决方案1】:

    首先,您页面上的所有 id 属性都应该具有唯一值。

    解决方案(现成的,未经测试的)可能是:

        foreach (var item in Model.IEThreadpost)
        {
             <a id="@item.ThreadpostID" class="mee" style="color: #980000" name="@item.ThreadpostID" href="#">[+]</a>
        }
    

    (注意值“mee”是如何转移到类属性中的,这对重复项很好)

    <script>
    $(document).ready(function () {
        $(".mee").click(function (e) {
            if ($(this).html() == "[+]") {
    
                $(this).html("[-]");
            }
            else {
                $(this).html("[+]");
            }
        });
    });
    </script>
    

    【讨论】:

    • 感谢您的出色工作,我已将其更改为课堂。
    猜你喜欢
    • 2015-07-04
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多