0

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

$('.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':
               .......
               .....
        }
});

然后接下来是我想从另一个地方调用这个点击函数

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

现在的问题是如果条件不起作用的页面点击功能。但是我得到了警报。非常感谢任何帮助。提前致谢...

4

2 回答 2

1

您需要$('.page-nav li').click(function(event){将. document.ready_ _ $('.page-nav li').click();因为如果您.click在 DOM 未准备好时调用,则可能没有附加事件处理程序

如果你不放在$('.page-nav li').click(function(event){里面,document.ready或者你正在处理动态创建的元素。您需要委托事件$(document).on("click",".page-nav li",function(event){

$.on

于 2013-09-03T10:00:57.063 回答
1

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

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'));

后者在选择的上下文中调用它的类(即函数内部的 this 将引用 selection(1)。它还将存储在会话变量中的值作为 id 传递。

旁注。你的测试

 if(Session.get('clickedTab')!=null||Session.get('clickedTab')!= undefined)

可能只是

if(Session.get('clickedTab'))

除非您可能在该变量中存储空字符串、零或布尔值 false。但是看看它是如何使用的,这是不太可能的,因为它们都是 id 属性的无效值

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

于 2013-09-03T10:13:03.910 回答