Val
Val

Reputation: 63

jQuery Two functions, same result, same element

I have two jQuery functions on same element with same result. Is there a way to have a shorter code:

$(document).ready(function(){
    $('#task_<?php echo $var_t; ?>').dblclick(function(){
        if($('#taskd_<?php echo $var_t; ?>').is(':visible')){
            $('.tlistd').hide();
            $('.tlist').removeClass('t_ar');
        }else{
            $('.tlistd').hide();
            $('.tlist').removeClass('t_ar');
            $('#taskd_<?php echo $var_t; ?>').show();
            $('#task_<?php echo $var_t; ?>').addClass('t_ar');
        }
    })
    $('#td_arrow_down_<?php echo $var_t; ?>').click(function(){
        if($('#taskd_<?php echo $var_t; ?>').is(':visible')){
            $('.tlistd').hide();
            $('.tlist').removeClass('t_ar');
        }else{
            $('.tlistd').hide();
            $('.tlist').removeClass('t_ar');
            $('#taskd_<?php echo $var_t; ?>').show();
            $('#task_<?php echo $var_t; ?>').addClass('t_ar');
        }
    });
});

Upvotes: 1

Views: 53

Answers (2)

Khamidulla
Khamidulla

Reputation: 2975

Yes it is possible. It is pretty simple you should create function and gave this function as input variable to event handler function. (i.e. .dbclick(), .click() and etc.). Since function also object in javasript.

$(document).ready(function(){
    $('#task_<?php echo $var_t; ?>').dblclick(do_action_name);
    $('#td_arrow_down_<?php echo $var_t; ?>').click(do_action_name);

    function do_action_name()
    {
        if($('#taskd_<?php echo $var_t; ?>').is(':visible'))
        {
            $('.tlistd').hide();
            $('.tlist').removeClass('t_ar');
        }
        else
        {
            $('.tlistd').hide();
            $('.tlist').removeClass('t_ar');
            $('#taskd_<?php echo $var_t; ?>').show();
            $('#task_<?php echo $var_t; ?>').addClass('t_ar');
        }
    }

});

Upvotes: 2

Satpal
Satpal

Reputation: 133433

Create a function and bind it

$(document).ready(function(){
    function myFunction(){
        if($('#taskd_<?php echo $var_t; ?>').is(':visible')){
            $('.tlistd').hide();
            $('.tlist').removeClass('t_ar');
        }else{
            $('.tlistd').hide();
            $('.tlist').removeClass('t_ar');
            $('#taskd_<?php echo $var_t; ?>').show();
            $('#task_<?php echo $var_t; ?>').addClass('t_ar');
        }
    }
    $('#task_<?php echo $var_t; ?>').dblclick(myFunction);
    $('#td_arrow_down_<?php echo $var_t; ?>').click(myFunction);
});

Upvotes: 2

Related Questions