代码之家  ›  专栏  ›  技术社区  ›  Galen

仅对某些页面执行jquery效果/操作

  •  7
  • Galen  · 技术社区  · 15 年前

    到目前为止,我一直在document.ready函数中删除所有jquery代码。我认为在某些情况下这不是最好的方法。

    例如:如果我想让动画在某个页面加载时执行,最好的方法是什么。

    $(document).ready(function() {
        $("#element_1").fadeIn();
        $("#element_2").delay('100').fadeIn();
        $("#element_3").delay('200').fadeIn();
    });
    

    如果它就在文档中,那么每次 任何 页面加载它将检查每一行并查找该元素。告诉jquery只在某个页面上执行一段代码以避免此问题的最佳方法是什么?

    2 回复  |  直到 11 年前
        1
  •  10
  •   Luca Filosofi    11 年前

    在执行动画之前检查页面上是否存在elememt

    if ($("#element-1").length) { 
       $("#element-1").fadeIn();
    }
    

    等其他元素 #element_2 #element_3


    致@numediaweb:

    当前jquery is() 实现如下

    is: function( selector ) {
      return !!selector && jQuery.filter( selector, this ).length > 0;
     },
    

    所以,使用 () 但是使用 length 起诉的速度更快 document.getElementById().length

        2
  •  0
  •   karim79    15 年前

    只包括你的代码 希望 在dom准备好用于该特定页面时执行。 $(document).ready(... 并不意味着您应该在每个页面上运行相同的代码块。这就需要进行各种检查,以便知道需要执行什么。

    我确信您将拥有一些您希望在每个页面上执行的常见功能,以及一些特定于页面的功能。如果是这样的话,那么可以将公共功能放在单个函数中,并从 $(文档)。就绪(… 这样剩下的代码就只针对那个特定的页面了。例如:

    function common() {
        alert('hello');
    }
    
    $(document).ready(function() {
        common();
        // do some page-specific stuff
    });
    

    我不同意在每一页上执行各种检查,这样代码就知道我们在哪里。这似乎很麻烦,完全可以避免,例如:

    function doAnimation() {
        $("#element_1").fadeIn();
        $("#element_2").delay('100').fadeIn();
        $("#element_3").delay('200').fadeIn();
    }
    
    $(document).ready(function() {
        if(window.location.href == 'http://example.com/foo') {
            doAnimation();
        }
        if(this page has blah) {
            doBlah();
        }
    });
    

    理想情况下 应该 铍是:

    $(document).ready(function() {
        // do stuff for foo.php
    });