Reputation: 63
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
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
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