2010-01-12 1 views
1

У меня есть кнопка, которая в зависимости от значения класса должна отправлять разные значения в POST, однако когда-либо это происходит только при одном условии, что бы я ни делал, я могу получить его только для отправки POST метода = добавить данные.Задача класса jquery check,

Это мой код

$("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()) 
     } 
    });  
    } 


    }); 

В основном то, что мне нужно, если при нажатии кнопки она получает класс называется активным добавил к нему и Аякса работает, когда она нажата снова, потребности класса быть удаленным и запустить ajax, возможно ли это?

ответ

5

То, что вы в основном делаете сейчас в вашей первой, если п является то, что вы проверяете $('a.navlink:not(.active)'), является ли истинным или ложным – $() всегда возвращает объект, который оценивает к истине .. Вы должны сделать 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'); 
    }   
}); 

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

+0

По сути, пользователь нажимает на ссылку при первом добавлении к ней активного класса и Ajax, который передает метод = вызов POST, когда пользователь нажимает на него снова, ему нужно удалить активный класс и запустите ajax, который отправит метод = delete в POST – Udders

+0

Я отредактировал свой ответ, чтобы сделать то, что вы описали. –

 Смежные вопросы

  • Нет связанных вопросов^_^