从javascript/jquery中的另一个函数中单击带有$(this)的函数调用

从javascript/jquery中的另一个函数中单击带有$(this)的函数调用,javascript,jquery,Javascript,Jquery,我有一个点击功能,如下所示 $('.page-nav li').click(function(event){ console.log("clickedTab-page-nav-first-before set ="+Session.get('clickedTab')); Session.set('clickedTab',event.target.id); //var sel = event.prevUntil("[class*=active]").andSelf(

我有一个点击功能,如下所示

$('.page-nav li').click(function(event){

    console.log("clickedTab-page-nav-first-before set ="+Session.get('clickedTab'));

    Session.set('clickedTab',event.target.id);
      //var sel = event.prevUntil("[class*=active]").andSelf();
    var sel = $(this).prevUntil("[class*=active]").andSelf(); //find all previous li 
                                                              //of li which have
                                                              //class=active
    sel = sel.add(sel.eq(0).prev()); // include the  that li also(Now all li elements).                      
    sel.removeClass('active'); //Remove the active.
      //sel = event.nextUntil("[class*=active]").andSelf(); //Also for top to bottom 
                                                            //(Viceversa)
    sel = $(this).nextUntil("[class*=active]").andSelf();
    sel = sel.add(sel.eq(-1).next());
    sel.removeClass('active');
      //event.addClass('active');
    $(this).addClass('active'); //Now add class active for the clicked li
    var rightcontent="";

    console.log("clickedTab-page-nav-second-after set = "+Session.get('clickedTab'));

    switch($(this).attr('id')){
            case  'rfq':
               .......
               .....
        }
});
接下来我想从另一个地方调用这个click函数

$(document).ready(function() {
     console.log("clickedTab-page load = "+Session.get('clickedTab'));
     if(Session.get('clickedTab')!=null||Session.get('clickedTab')!= undefined){
         alert("Got It");
         //$('.page-nav li').click(event);
         $('.page-nav li').click(); //this is not working
     }
});
现在的问题是如果条件不起作用,页面点击功能。但是我得到了警告。非常感谢您的帮助。先谢谢你

您需要在
$('.page nav li')之前放置
$('.page nav li')。单击
文档中的(函数(事件){
。就绪
$('.page nav li')。单击();
。因为如果在DOM未就绪时调用
.click
,则有可能没有附加事件处理程序

如果您没有放入
$('.page nav li')。请单击
文档中的(函数(事件){
。准备就绪
,或者您正在处理动态创建的元素。您需要委托事件
$(文档)。在(“单击”、“.page nav li”上,单击函数(事件){


中,您没有在函数中真正使用
事件
参数,并且您声明希望在事件链之外调用它,以便将其更改为常规函数

var setupClicktab = function(id){

    console.log("clickedTab-page-nav-first-before set ="+Session.get('clickedTab'));

    Session.set('clickedTab',id);
    ...
}
您使用它的方式如下:

$('.page-nav li').click(function(event){return setupClicktab(event.target.id);});
文件准备就绪

setupClicktab.Call($('.page-nav li'),Session.get('clickedTab'));
后一个调用在选择的上下文中对其进行类化(也就是说,函数中的类将引用选择(1)。它还将会话变量中存储的值作为id传递给

旁注,你的测试

 if(Session.get('clickedTab')!=null||Session.get('clickedTab')!= undefined)
可能只是

if(Session.get('clickedTab'))
除非您可能在该变量中存储空字符串、零或布尔值false。但是查看它的使用方式不太可能,因为它们都是id属性的无效值


(1) 这与引用DOM元素的单击事件略有不同)

您是否放置了
$('.page nav li')。单击(函数(事件){
文档中。准备好了吗?
?如果未放置
$('.page nav li'),请确保在触发
单击
事件之前进行事件注册。在
文档中单击(函数(事件){
。准备就绪
或您正在处理动态创建的元素。您需要委托事件
$(文档)。在(“单击”、“.page nav li”)上,函数(事件){
@KhanhTO yes i put$('.page nav li')。单击(函数(事件){在文档redy中,并且它不是动态创建的elemts@ArunPJohny如何完成事件注册谢谢你的帮助。它很有效。很好。实际上我们不需要这个变量。@manuthalasseril我也能看出它的必要性。它主要是为了完整性。为了接近原始版本,如果u稍后更新该函数,以便它实际使用该函数