클릭시로드되는 조각이 있습니다. css-tricks에있는 링크를 통해 페이지를 스크롤합니다. 나는 다음과 같은 오류가 발생합니다 : catch되지 않은 오류 : 구문 오류, 인식 할 수없는 표현 : #! Fragment_NamejQuery가 hashbang으로 표현식을 인식하지 못합니다.
내 JS
$(function() {
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);//this is where the error is
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top
}, 1000);
return false;
}
}
});
});
HTML
내가 시도<li><a href="#!Fragment_Name">Link Text</a></li>
VAR 대상 = $ ($ (이 .해시시)); 기쁨이 없음
모든 것이 여전히 작동하므로이 문제를 해결하고 콘솔에서 오류를 제거하는 방법을 알고 싶습니다.
나는 var target = $ (this.hash)를 바꿨다. var target = $ (this.hash.replace (/ ([!])/g, "\\ $ 1")); 이제 오류는 읽지 않은 오류를 읽습니다. 구문 오류, 인식 할 수없는 표현식 : [name =! Fragment_Name] –
@DirtyBirdDesign 두 번째 선택자입니다 ($ ('[name ='+ this.hash.slice (1) + ']'); '). '='와''''다음에 따옴표를 추가하십시오 :'$ ('[name = "'+ this.hash.slice (1) + '"]'); ' –
우수! 결합 된 두 가지. 나는/[!]/g이 정확히 무엇을하는지 이해하지 못한다. 나는 그것이 "!" 그러나 이유는 아닙니다. 두 번째 부분은 슬라이스에서 "#"을 이스케이프 처리합니다. 대단히 감사합니다. –