jQuery点击事件无法在多个屏幕上运行

时间:2013-11-27 10:25:50

标签: jquery jquery-1.4

我正在使用jQuery 1.4.2。 使用CSS选择器“span.accordionOn”,我正在处理一个click事件。 在屏幕上,它工作正常。当我导航到下一个屏幕时,函数不会被调用。

jQuery处理程序如下所示。我将它们保存在js文件中并为每个页面加载加载js文件。

 $("span.accordionOn").click(function(event){
    $(this).parents(".toggleOuterCustom");
    $(this).parents(".toggleOuterCustom").find(".lHeight").toggleClass('lHeighttranslate');
    return false;
  });




// toggle link icon
  $('span.accordionOn').click(function(){
    $(this).toggleClass('accordionOff');
  });

2 个答案:

答案 0 :(得分:1)

如果没有看到更多代码,就很难找到确切的问题,但这里有一个猜测:

 $(document).on("click", "span.accordionOn", function(event){
    $(this).toggleClass('accordionOff'); //I merged the 2 functions
    $(this).parents(".toggleOuterCustom");
    $(this).parents(".toggleOuterCustom").find(".lHeight").toggleClass('lHeighttranslate');
    return false;
  });

试试上面的代码。如果这样可行则问题如下:

  • 将事件处理程序绑定到当前位于文档中的所有span.accordionOn元素
  • 但是,如果您在之后添加新的span.accordionOn元素,则该事件将不会绑定到它们
  • on事件将适用于文档中所有当前和未来的span.accordionOn项目,以解决此问题

答案 1 :(得分:0)

我发现了这个问题。是的,你是对的,当我试图绑定时,元素不存在。

然而,对于jQuery 1.4.2,'on()'不存在并使用'live'。这是代码。

  $("span.accordionOn").live('click',function(event){
    $(this).parents(".toggleOuterCustom");
    $(this).parents(".toggleOuterCustom").find(".lHeight").toggleClass('lHeighttranslate');
    return false;
  });