基于jquery hasClass输出

时间:2015-06-19 12:16:59

标签: javascript jquery model-view-controller url.action

我正在尝试根据jquery的hasClass输出将整数参数传递给Url.Action。类似于下面但是语法无效的东西。

<li class="myClass">
    <a href="@Url.Action("SetActionMode", "Home",  new { enable = $(this).find('i').hasClass("fa-check") ? 0 : 1 })">
      <i class="fa fa-check"></i> Debug Mode
    </a>
</li>

上面的正确语法是什么,或者有一些简单的方法可以做到这一点吗?

3 个答案:

答案 0 :(得分:3)

我会说你应该'中断'链接点击,构建URL然后转到这个URL。

$(".myClass a").click(function(event) {
    event.preventDefault();
    var url = $(this).attr('href');
    // here you do whatever makes sense
    url = url + "?enable=" + ($(this).find('i').hasClass("fa-check") ? 0 : 1)
    window.location.href = url;

});

答案 1 :(得分:0)

ASP.NET需要来自jQuery的值,但是两者不能同时运行 - jQuery在客户端运行,ASP.NET在服务器端运行。因此,在服务器端,它编译并将其发送到客户端,然后,在客户端,它运行jQuery代码。 hasClass是jQuery代码,new { ...是ASP.NET代码,这就是为什么它的语法不正确。

答案 2 :(得分:0)

你不能这样做,但是你有另一种选择,即将你的锚标记为一个类,然后为此编写一个单击函数,在此之后使用location.href来执行相同的操作:

<li class="myClass">
    <a href="javascript:void(0)" class="clickme">
      <i class="fa fa-check"></i> Debug Mode
    </a>
</li>

<script>
$('.clickme').on('click',function(){
location.href='/Home/SetActionMode?enable='+$(this).find('i').hasClass('fa-check')?0:1;
})
</script>

这肯定会做你需要的。