删除'#'来自JQuery中的URL

时间:2014-07-08 06:14:45

标签: javascript jquery html css3

我已经编写了一个脚本,从URL&中删除了#滚动到特定的div。它适用于普通网址

10.0.1.22/dev/pg/blog/all/

但它不适用于像

这样的网址
10.0.1.22/dev/pg/search/?tag=a&entity_subtype=blog&entity_type=object&search_type=entities#39531

它没有从网址&中删除#滚动也无法正常工作。

脚本

    jQuery(document).ready(function($) {

    $(".full_view_btn").live('click', function(){
        var divid = $(this).attr('data-id');
        var long_desc = "#inner_descrip" + divid;   
        var short_desc = "#listing_desp" + divid;
        var shw_mre_btn = "#full_view" + divid;

        if($(long_desc).is( ':hidden' )){
            $('.long_desc').hide();
            $('.short_desc').show();
            $(long_desc).show();
            $(short_desc).hide();
            $('.full_view_btn').text('Show more');
            $(shw_mre_btn).text('Show less');
          } else{
              $(long_desc).hide();
              $(short_desc).show();
              $(shw_mre_btn).text('Show more');
          }

        if (location.pathname.replace('/^\//','') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
          var target = $(this.hash);
          target = target.length ? target : $('[id=' + this.hash.slice(1) +']');
          if (target.length) {
            $('html,body').animate({
              scrollTop: target.offset().top-60
            }, 500);
                target.parent().find('#highlight_div'+divid).css("box-shadow", "0 0 2px 1px #cccccc");
            setTimeout(function() {
                target.parent().find('#highlight_div'+divid).css("box-shadow", "none");
            }, 1000);
            return false;
          }
        }

    });

});

任何想法的人如何解决这个问题?我找不到错误在哪里?

1 个答案:

答案 0 :(得分:1)

你不能使用jQuery对象来包装哈希字符串,否则你将获得空数组,因为jQuery的输入参数应该是一个选择器。您需要将目标作为jQuery对象包装的DOM元素来使用offset等方法。

因此,您必须将目标更改为或向下滚动的目标

var target = $(this.target);