点击' a href'

时间:2015-12-31 08:56:57

标签: jquery

function cat_skills(){

    //  if ($(this).hasClass("actives")){
        alert('hui');
         jQuery('.cateeg li categ.actives').removeClass('actives');
     jQuery(this).addClass('actives');
    //  }
        var  cat_skills= jQuery('.categ').prev('input[name="hidden"]').val();//jQuery('.actives').next().val();
        jQuery('.cat_ski').val(cat_skills);
        alert(cat_skills);
        var  cata= jQuery('.catt').val();
        var  cat_tags= jQuery('.cat_ta').val();
        var ajaxurl = '/wp-admin/admin-ajax.php';
        var data = {
                'action' : 'fair_actionss',
                'cat' : cata,
                'cat_skills': cat_skills,
                'cat_tags': cat_tags
        };
        jQuery.post(ajaxurl, data, function(data){
            //alert(data);
            jQuery('.custom_portfolio_file').html(data)

        });     

}

当我点击一个href标签时,addClass和removeClass不起作用,但它显示一个警告,并且ajax功能正在工作。

1 个答案:

答案 0 :(得分:2)

当你使用jQuery时,你应该绑定使用它的事件处理程序而不是丑陋的内联点击处理程序。

您的问题是由this的错误上下文引起的,并且使用错误的选择器categ.actives它会查找带有categ类的actives元素

//Bind event using jQuery
$('.cateeg li a.categ').on('click', cat_skills);

function cat_skills() {
    if ($(this).hasClass("actives")) {
        //Your selector is incorrect
        jQuery('.cateeg li a.categ.actives').removeClass('actives');
        jQuery(this).addClass('actives');
    }

    //Your existing code    
}

否则,将调用处理程序的元素引用(即this)传递给cat_skills函数

<a href="" class="categ" onclick="cat_skills(this)">

并使用元素引用

修改您的函数
function cat_skills(elem) {
    if ($(elem).hasClass("actives")) {
        //Your selector is incorrect
        jQuery('.cateeg li a.categ.actives').removeClass('actives');
        jQuery(elem).addClass('actives');
    }

    //Your existing code    
}