【问题标题】:My function won't trigger onclick jquery我的函数不会触发 onclick jquery
【发布时间】:2016-10-24 13:11:27
【问题描述】:

我有一个 asp.net 剑道网格,里面有一个带类的元素。我想通过单击我放在右侧的链接来​​用另一个替换这个类。

所以我使用 jquery 来执行此操作,但它似乎无法正常工作.. 在 chrome 的控制台中我没有收到任何错误。我尝试发出警报,但没有触发。

如果有人可以帮助这里是我的 jquery

function changetoOK() {
    grid.tbody.find("td").onclick(function (index) {
        if ($("a").hasClass('changeToOk'))
        {
            $(this).removeClass('customClassVerif');
            $(this).addClass('customClassOK');
        }            
    });
}

我还添加了一个带有 html 助手的假链接,将其放在我的网格中,所以我在网格中有这个:

columns.Template(@<text></text>).ClientTemplate(@Html.EmptyLink("Passer à OK").ToHtmlString());

这在一个类中

public static class MyHtmlExtensions
{
    public static MvcHtmlString EmptyLink(this HtmlHelper helper, string linkText)
    {
        var tag = new TagBuilder("a");
        tag.MergeAttribute("class", "changeToOK");
        tag.MergeAttribute("href", "javascript:void(0);");
        tag.SetInnerText(linkText);
        return MvcHtmlString.Create(tag.ToString());
    }
}

[编辑]

我想知道会很好。我首先在我的代码中进行了一些更改,这里有一些说明。

我在网格中有一个带有类的元素,当我点击我的链接时,我希望该类更改为另一个。

【问题讨论】:

  • grid.tbody.find("td").onclick 不是 jQuery
  • 会不会是上面代码中的grid 和/或tbody 不是jQuery 对象? jQuery 方法,在本例中为 .find(),只能在 jQuery 对象上调用。此外,您的 $("a") 返回文档中所有锚元素的集合,但我猜您需要一个特定的元素。

标签: javascript jquery asp.net-mvc kendo-grid


【解决方案1】:

我认为问题在于您尝试使用在 jQuery 中不起作用的“onclick”方法。

尝试使用 .on('click', function(index) ...

【讨论】:

    【解决方案2】:

    .onclick 不是 jquery 方法,请尝试使用 .click,如下所示:

    function changetoOK() {
        grid.tbody.find("td").click(function (index) {
            if ($("a").hasClass('changeToOk'))
            {
                $(this).removeClass('changeToOk');
                $(this).addClass('customClassOK');
            }            
        });
    }
    

    这会将点击事件绑定到td 元素,但请记住,您提供的所有功能都是查找所有a 元素并查看其中是否有任何changeToOk 类。我提到这一点的唯一原因是因为您为 click 函数提供了一个从未使用过的索引。

    【讨论】:

    • 是的,我想我错过了一些东西。我真正想要的是:当我单击网格中 td 内的 a 元素时,我希望网格的另一个 td 元素通过删除类 customClassVerif 来获取类 customClassOK (我在我的帖子中进行了编辑)
    • 所以你是说你想点击恰好在网格中的 td 元素内的 a 元素,然后它将从不同的 td 中删除 customClassVerif 并用 customClassOk 替换该类?
    • 是的,这正是我想要的,不同的 td 也在网格内
    【解决方案3】:
    This will work as expected :
    
    function changetoOK() {
        grid.tbody.find("td").on('click', function (event) {
            if ($("a").hasClass('changeToOk'))
            {
                $(this).removeClass('changeToOk');
                $(this).addClass('customClassOK');
            }            
        });
    }
    

    【讨论】:

    • 它甚至无法正常工作。但是我对我需要在我的帖子上做的事情做了一些改变,也在 DibsyJr 的回答下面的评论中
    • 会不会是上面代码中的grid 和/或tbody 不是jQuery 对象? jQuery 方法,在本例中为 .find(),只能在 jQuery 对象上调用。
    【解决方案4】:

    所以对于所有想和我一样的人来说,最后找出方法。

    你所要做的就是:

    $(document).on('click', '.changeToOK', function () {
        $(this).parent().parent().find('.verifyCell').removeClass('customClassVerif').addClass('customClassOK');
    })
    

    我在我的第一个元素中添加了第二个类并且它有效!

    感谢所有试图帮助我的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 2012-01-06
      • 2012-07-12
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多