开发者

Jscrollpane and internal anchor links

开发者 https://www.devze.com 2023-03-31 13:44 出处:网络
I am using Jscrollpane and everything works great, except when I try to use it with an internal anchor.

I am using Jscrollpane and everything works great, except when I try to use it with an internal anchor. It should work like the example on the official page.

But in my example it really des开发者_运维百科troys my site. The whole content is floating upwards and I can't figure it out myself.

Here is my page: http://kunden.kunstrasen.at/htmltriest/index.php?site=dieanreise&user_lang=de and if the inner anchor is clicked: http://kunden.kunstrasen.at/htmltriest/index.php?site=dieanreise&user_lang=de#westautobahn

Anybody a clou whats going on here? Thanks for your help.


jspane does not work with old style anchors e.g.

<a name="anchor"></a>

instead you have to write

<a id="anchor"></a>

additionaly you have to enable

hijackInternalLinks: true;

in jScrollPane settings Object.

The hijackInternalLinks also captures links from outside the scrollpane, if you only need internal links you can add this code, like hijackInternalLinks it binds the click funktion on the a elements and calls the scrollToElement with the target:

            \$(document).ready(function() {
            panes = \$(".scroll");
            //hijackInternalLinks: true;
            panes.jScrollPane({
            });
            panes.each(function(i,obj){
                var pane = \$(obj);
                var api = pane.data('jsp');
                var links = pane.find("a");
                links.bind('click', function() {
                    var uriParts = this.href.split('#');
                    if (uriParts.length == 2) {
                        var target = '#' + uriParts[1];
                        try{
                            api.scrollToElement(target, true);
                        }catch(e){
                            alert(e);
                        }
                        return false;
                    }
                });
            });
        });

but note you will always have to use the id attribute on a tags. If you are using tinymce you can repair the code with this function

function myCustomCleanup(type, value) {
    switch (type) {
            case "get_from_editor_dom":
                    var as = value.getElementsByTagName("a");
                    for(var i=0; i< as.length;i++){
                        if (as[i].hasAttribute('name')){
                            var name = as[i].getAttribute('name');
                            as[i].setAttribute('id',name);
                        }
                    }
                    break;
    }

    return value;

}

0

精彩评论

暂无评论...
验证码 换一张
取 消