Моя функция не будет вызывать JQuery

У меня есть сетка кендо 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());
    }
}

[РЕДАКТИРОВАТЬ]

Я думаю, что это может быть полезно знать. Сначала я сделал некоторые изменения в своем коде, и вот некоторые пояснения.

У меня есть элемент внутри сетки с классом, и я хочу, чтобы этот класс изменился на другой, когда я нажму на свою ссылку.

4 ответа

Я думаю, что проблема в том, что вы пытаетесь использовать метод onclick, который не работает в jQuery.

Попробуйте использовать.on('click', function(index) ...

.onclick не является методом jquery, попробуйте вместо этого.click, вот так:

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

Это свяжет событие click с td элементы, хотя имейте в виду, что все функции, которые вы предоставили, это найти все a элементы и посмотреть, если какой-либо из них имеет класс changeToOk, Единственная причина, по которой я упоминаю это, заключается в том, что вы даете функции click индекс, который затем никогда не используется.

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

Так что для всех, кто хочет сделать то же самое, что и я, наконец, узнайте как.

Все, что вам нужно сделать, это:

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

Я добавил второй класс к своему первому элементу, и он работает!

Спасибо всем, кто пытался мне помочь.

Другие вопросы по тегам