MVC AJAX JQuery - 捕获调用Javascript函数的控件的ID

时间:2011-08-01 18:51:17

标签: asp.net-mvc-3 jquery

我正在玩并试图在MVC中学习更多关于AJAX的知识。

目前,我在MVC视图中有以下代码块。我们的想法是,当点击链接时,应用程序将在控制器中触发FlagInappropriate()方法,并在单击的链接中显示一条消息并禁用该链接。

<script type="text/javascript">
    function flagInappropriate(postId) {
        var url = "Home/FlagAsInappropriate/" + postId;
        $.post(url, function (data) {
            if (data) {
                $('#LinkAppropriate').text('Post has been flagged');
                $('#LinkAppropriate').attr("href", "javascript:void(0);");
            } else {
                alert('Post cannot be flagged');
            }
        });
    }
</script>

<h1>Index</h1>
<a href="javascript:flagInappropriate(1)" id="LinkAppropriate">Flag as inappropriate</a>

目前这是有效的,没有任何投诉。我的下一步是能够使用任何数量的链接调用此javascript方法。请参阅以下示例:

<script type="text/javascript">
    function flagInappropriate(postId) {
        var url = "Home/FlagAsInappropriate/" + postId;
        var callingObject = CallingObjectIDGetter();
        $.post(url, function (data) {
            if (data) {
                $('#' + callingObject).text('Post has been flagged');
                $('#' + callingObject).attr("href", "javascript:void(0);");
            } else {
                alert('Post cannot be flagged');
            }
        });
    }
</script>

<h1>Index</h1>
<a href="javascript:flagInappropriate(1)" id="Link1">Flag as inappropriate</a>
<a href="javascript:flagInappropriate(1)" id="Link2">Flag as inappropriate</a>
<a href="javascript:flagInappropriate(1)" id="Link3">Flag as inappropriate</a>
<a href="javascript:flagInappropriate(1)" id="Link4">Flag as inappropriate</a>
<a href="javascript:flagInappropriate(1)" id="Link5">Flag as inappropriate</a>

鉴于这种情况,我如何派生和操纵调用Javascript方法的对象?简而言之,我将使用什么来代替 var callingObject = CallingObjectIDGetter(); 这一行?

谢谢!

1 个答案:

答案 0 :(得分:1)

为什么不利用jQuery并执行此操作,而不是绑定标记中的事件:

标记:

<a href="Home/FlagAsInappropriate/1" id="Link1">Flag as inappropriate</a>
... more links go here...

的javascript:

function flagInappropriate(callingObject, url) {
    $.post(url, function (data) {
        if (data) {
            $('#' + callingObject).text('Post has been flagged');
            $('#' + callingObject).attr("href", "javascript:void(0);");
        } else {
            alert('Post cannot be flagged');
        }
    });
}

$('a').click(function(e) {
    e.preventDefault();
    flagInappropriate($(this).attr('id'), $(this).attr('href'));
});