Подтвердить что ты не робот

JQuery addClass onClick

Настройка очень проста; Я хочу, чтобы добавить класс в (в этом случае) кнопку при запуске onClick-event. Моя проблема в том, что я не нашел способ передать кнопку в качестве параметра функции. Я хотел бы сделать что-то вроде:

<asp:Button ID="Button" runat="server" onclick="addClassByClick(this)"/>

И тогда функция javaScript выглядит примерно так:

function addClassByClick(button){
    button.addClass("active")
}

Я знаю, что у меня здесь много ошибок, но почему я публикую. Я пробовал разные сценарии с jQuery и без jQuery, но у меня всегда заканчивается сломанное решение (щелчки внезапно перестают проходить, класс не добавляется и т.д.), Поэтому я решил спросить у профессионалов.

Любое предложение о том, что я могу попробовать? Спасибо за чтение edit и всю помощь!

4b9b3361

Ответ 1

Это должен быть элемент jQuery для использования .addClass(), поэтому его необходимо обернуть в $() следующим образом:

function addClassByClick(button){
  $(button).addClass("active")
}

Лучшее общее решение было бы ненавязчивым script, например:

<asp:Button ID="Button" runat="server" class="clickable"/>

Затем в jquery:

$(function() {                       //run when the DOM is ready
  $(".clickable").click(function() {  //use a class, since your ID gets mangled
    $(this).addClass("active");      //add the class to the clicked element
  });
});

Ответ 2

Использование jQuery:

$('#Button').click(function(){
    $(this).addClass("active");
});

Таким образом, вам не нужно загрязнять вашу HTML-разметку обработчиками onclick.

Ответ 3

$(document).ready(function() {
    $('#Button').click(function() {
        $(this).addClass('active');
    });
});

должен сделать трюк. если вы не загружаете кнопку с помощью ajax. В этом случае вы можете сделать:

$('#Button').live('click', function() {...

Также помните, что не используйте один и тот же идентификатор более одного раза в своем html-коде.

Ответ 4

$('#button').click(function(){
    $(this).addClass('active');
});

Ответ 5

Попробуйте сделать ваш css более конкретным, чтобы новый (зеленый) стиль был более конкретным, чем предыдущий, чтобы он работал у меня!

Например, вы можете использовать в css:

button:active {/*your style here*/}

Вместо (возможно, не работает):

.active {/*style*/} (.active is not a pseudo-class)

Надеюсь, что это поможет!