如何进行AJAX调用,使其仅在我单击包含在特定类中的链接时触发;id”;父元素的

How to make an AJAX call so that it only fires when I click on a link contained within a specific class, and includes the "id" of the parent element?

本文关键字:链接 元素 id 调用 AJAX 何进行 包含 单击      更新时间:2023-09-26

我在网页上有以下内容:

<td class="containslink" id=1>
    <a href=/ControllerX/ActionY/7>View</a>
</td>

上面有很多版本,每个版本都有不同的id。

当点击包含的链接时,我需要页面向以下地址发出AJAX调用:

/Controller/Action/1

@Url.Action("Action", "Controller" new { id = 1 })

其中id等于td的id。


如果我这样硬编码我的AJAX调用:

myUrl = @Url.Action("Action", "Controller" new { id = 1});
$(document).ready(function () {
    $("a").click(function(){
        $.ajax({
            url: myUrl,
        });
    });
});

当我点击页面上的任何链接时,AJAX调用就会触发,并且总是以id为1(显然)来触发。

如何更改此AJAX调用,使其仅在单击包含在"containsLink"td class中的链接时工作,并包括包含单击链接的tdid

您需要收紧选择器(不要只选择所有<a>元素)并在事件处理程序中获取ID。

$(document).ready(function () {
    $("td.containslink a").click(function(){
        var id = $(this).closest("td.containslink").attr("id");
        $.ajax({
            url: "/Controller/Action/" + id
        });
    });
});

请注意,1是一个无效的ID,因为它以数字开头。您可能需要使用data-属性,如data-id

试试这个:

$(document).ready(function () {
    $("td.containsLink > a").click(function(){
        var tdId = $(this).parent("td.containsLink").attr("id");
        // do what ever you need to do with td value here
        $.ajax({
            url: myUrl,
        });
    });
});