只有在页面上找到元素时才运行函数?

时间:2014-10-08 09:14:41

标签: javascript jquery

如果在页面上找到元素,我该如何运行此代码?这个功能在我需要功能的主页上运行良好;但是,在不需要该功能的其他页面上,控制台在控制台中会产生cannot read property .top of undefined...错误,因为我假设在页面上找不到这些元素。

$('.play').click(function( e ){
    e.preventDefault();
    $('html, body').animate({
        scrollTop: $("#music").offset().top - (
          $(window).width() < 450 ? 112 : 60
        )
    }, 500);
    $('.play').fadeOut(function() {
        $('.music-home').fadeIn('slow');
    });
});

3 个答案:

答案 0 :(得分:1)

if ($( "#music").length) {
    //Element exists
}

答案 1 :(得分:0)

$('.play').click(function( e ){
    e.preventDefault(); 
    var len = $("#music").length;
    if(len){ 
        //do something
    }
});

答案 2 :(得分:0)

在访问元素length之前先查找它。 尝试下面的代码,这将适用于任何页面。因为它只有在找到#music元素时才会起作用,否则就会失败。

$('.play').click(function( e ){
    e.preventDefault();
    if($("#music").length > 0)
    {
        $('html, body').animate({
          scrollTop: $("#music").offset().top - (
          $(window).width() < 450 ? 112 : 60
         )
        }, 500);
         $('.play').fadeOut(function() {
         $('.music-home').fadeIn('slow');
      });
    }
});