0

私はウェブページに次のものを持っています:

<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 })

ここで、は' sididと同じです。td


AJAX呼び出しを次のようにハードコーディングした場合:

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

$(document).ready(function () {
    $("a").click(function(){
        $.ajax({
            url: myUrl,
        });
    });
});

AJAX呼び出しは、ページ上の任意のリンクをクリックすると発生し、常にid1の値で発生します(明らかに)。

td classこのAJAX呼び出しを変更して、の中に含まれるリンクをクリックしたときにのみ機能し、クリックされたリンクを含むのを含むようにするにはどうすればよい"containsLink"ですidtd

4

2 に答える 2

1

セレクターを厳しくし(すべての<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

于 2012-08-30T13:55:42.533 に答える
1

これを試して:

$(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,
        });
    });
});
于 2012-08-30T13:56:26.073 に答える