2013-07-05 2 views
0

html 파일의 내용을 특정 페이지의 현재 페이지에 삽입하는 간단한 jquery 함수를 작성하려고합니다. 그리고 그 때까지 스크롤 할 때 bootstrap의 smoothscroll.js를 활성화합니다. 링크가 클릭됩니다.앵커에 페이지의 내용 추가 클릭

여기 내 시작이다 :

스크립트 :

<script type="text/javascript"> 
$('a').filter('[data-fetch]').click(function(e){ 
    var clicked = $(e.target).closest('a') 
    , fetch = clicked.attr('data-fetch') 
    ; 

    $.ajax({ 
    url: fetch, 
    success: function(data){ 

     $('body').append(data); 
     smoothScroller(clicked.attr('href')); 

    }); 
    }); 
}); 
    </script> 

HTML :

<a href="#about" data-fetch="index-alt.html">Link</a> 

#about 앵커가 index-alt.html 페이지에 있습니다. 이 올바른지?

$('a').filter('[data-fetch]').click(function(e){ 
    var fetch = $(this).data('fetch'); //this here refers to the clicked element. 

또한 단지 필터를 제거하고 할 얻을 수 있습니다 :

답변

2

나는 당신이 그렇게이 시도 클릭 요소의 속성을 얻으려고 생각 그냥 사용

$('a[data-fetch]').click(function(e){ 
    var fetch = $(this).data('fetch'); 
+0

나는 jsfiddle이 아약스를 허용하지 않는다는 것을 알고 있습니다. 이 답변을 시연하고 데모 할 수있는 플랫폼을 권할 수 있습니까? – alias51

+0

@RobM 코드 자체에이 코드를 추가하면됩니다. – PSL

1

.load()

$('a').filter('[data-fetch]').click(function (e) { 
    var url = $(this).data("fetch"); //use .data to retrieve custom data 
    $("body").load(url, function() { 
     console.log("data loaded"); 
    }); 
}); 
+0

그는 body의 전체 내용을 새로운 html로 대체하므로 load를 사용할 수 없다고 생각합니다. 아약스로 새 데이터를 추가하려고하는 것 같습니다. – PSL