我已经编写了一个脚本,从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;
}
}
});
});
任何想法的人如何解决这个问题?我找不到错误在哪里?
答案 0 :(得分:1)
你不能使用jQuery对象来包装哈希字符串,否则你将获得空数组,因为jQuery的输入参数应该是一个选择器。您需要将目标作为jQuery对象包装的DOM元素来使用offset等方法。
因此,您必须将目标更改为或向下滚动的目标
var target = $(this.target);