jQuery Изменить состояние кнопок Div и нажать Отключить - PullRequest
4 голосов
/ 18 апреля 2009

Javascript-код jQuery ниже работает, за исключением того, что я хотел бы добавить 2 функции в состояние кнопки.

  1. Когда пользователь нажимает одну из кнопок, другая кнопка, которая не была нажата, получает новый класс (внешний вид).

  2. Состояние обеих кнопок должно измениться на unclickable.

[div id="1" class="__button_image"] [/div]
[div id="2" class="__button_image"] [/div]
$("div.__button_image").mouseover(function () {
    $(this).addClass("__button_image_hover");
});

$("div.__button_image").mouseout(function () {
    jq(this).removeClass("__button_image_hover");
});

$("div.__button_image").click(function () { 
    $(this).removeClass("__button_image_hover");
    $(this).addClass("__button_image_clicked");

    jQuery.get('/do/request');        
});

Ответы [ 5 ]

3 голосов
/ 21 апреля 2009

Вот окончательный код, с которым я пошел:

$("div.__button_image").mouseover(function () {
    $(this).addClass("__button_image_hover");
});

$("div.__button_image").mouseout(function () {
    $(this).removeClass("__button_image_hover");
});

$("div.__button_image").click(function () {

    /** change button look to 'clicked' */
    $(this).addClass("__button_image_clicked");

    /** get the id of the current button */
    b_id = $(this).attr('id');

    /** unbind both vote buttons for *no* interaction */
    $("div.__button_image").unbind('click');
    $("div.__button_image").unbind('mouseover');
    $("div.__button_image").unbind('mouseout');

    /**
     * wire the .each function to iterate the classes 
     * so we can change the look of the one that was 
     * not clicked.
    */
    $('div.__button_image').each(function() {
      button_id = $(this).attr('id');
      if(button_id!=b_id) {
         $('#'+button_id).removeClass("__button_image");
         $('#'+button_id).addClass("__button_image_gray");  

    }
});

jQuery.get('/do/request?id='+b_id); 
$(this).parent().css('cursor', 'default');
2 голосов
/ 18 апреля 2009

В чем проблема? Единственное, что я вижу, что ты скучаешь - это

$("div.__button_image").unbind('click');

Это удалит обработчик 'click' (установив его обратно по умолчанию).

1 голос
/ 05 ноября 2012

Это всегда работает для меня (также изменяет непрозрачность до 80% и меняет курсор на ожидание)

$("#buttonDivId").css({opacity: 0.8, cursor: "wait"}).prop("disabled", true);
1 голос
/ 19 апреля 2009

Я бы изменил ваш обработчик click () следующим образом:

$("div.__button_image").click(function () { 
    $(this).removeClass("__button_image_hover");
    $(this).addClass("__button_image_clicked");

    /*
     * Add look class to all buttons, then remove it from this one
     */
    $("div.__button_image").addClass("look");
    $(this).removeClass("look");

    /*
     * Remove click handler from all buttons
     */
    $("div.__button_image").unbind('click');

    jQuery.get('/do/request');        
});
0 голосов
/ 19 декабря 2012

Если вы используете JQuery UI, вы можете использовать метод отключения.

$("selector").button("disable");

http://api.jqueryui.com/button/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...