проблема класса проверки jquery, - PullRequest
1 голос
/ 12 января 2010

У меня есть кнопка, которая в зависимости от значения класса должна посылать разные значения в POST, однако, что бы ни случилось, выполняется только одно условие, что бы я ни делал, я могу заставить его только отправить POST метод = add data.

Это мой код

$("a.navlink").click(function (ev) {
    $(this).removeClass("active");
    var url = $(this).attr("href")
    ev.preventDefault();
    if($('a.navlink:not(.active)')) {

        $.ajax ({
             url: url,
             type: "POST",
             data: "method=add",
             success : function (html) {
                $('#accordion').accordion('destroy');
                 $("#accordion").append(html);
                 $('#accordion').accordion({
                     active: 0,
                     header:'h2.Blog'
                 });
             //alert(accordion())
             }
         });
    }
    if ($(this).hasClass("active")) {
    //  $(this).addClass('active')
    $.ajax ({
         url: url,
         type: "POST",
         data: "method=delete",
         success : function (html) {
            alert("hello")
            $(this).removeClass('active')
         //alert(accordion())
         }
     });    
    }


     });

По сути, мне нужно следующее: если при нажатии кнопки к ней добавляется класс с именем active, и запускается ajax, при повторном нажатии этого класса необходимо удалить класс и запустить ajax, возможно ли это?

1 Ответ

5 голосов
/ 12 января 2010

Что вы в основном делаете сейчас в первом предложении if, вы проверяете, является ли $('a.navlink:not(.active)') истинным или ложным & ndash; $() всегда возвращает объект, который оценивается как true. Вы должны также сделать hasClass для этого. И вы удаляете «активный» класс до if, так как вы можете сравнить его позже?

Неясно, что вы пытаетесь сделать, но то, что вы хотите, вероятно, что-то вроде этого:

$("a.navlink").click(function(ev) {
    var url = $(this).attr("href")
    ev.preventDefault();
    // If the link is not active, run 'add':
    if(!$(this).hasClass('active')) {
        $.ajax ({
            url: url,
            type: "POST",
            data: "method=add",
            success: function (html) {
                $('#accordion').accordion('destroy');
                $("#accordion").append(html);
                $('#accordion').accordion({
                    active: 0,
                    header:'h2.Blog'
                });                
            }
        });
        // Mark it as active
        $(this).addClass('active');
    // If the link is active, run 'delete':
    } else {
        $.ajax ({
            url: url,
            type: "POST",
            data: "method=delete",
            success: function (html) {
                alert("hello")
            }
        });
        // Unmark it.
        $(this).removeClass('active');
    }        
});

Цель этого кода не имеет для меня особого смысла, так что скажите мне, правильно ли я вас понял.

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