1

我正在尝试使用 Codeigniter + Smarty + javascript 创建一个常见问题解答页面

这段代码:

$(document).ready(function() {
    $('dd').hide(); 

    $('dt').click(function(){ 
        $(this).next('dd').slideToggle('slow'); 
    });

    $('a.close').click(function (){ $(this).parent('dd').slideUp('slow'); });
 }); 

我的 .tpl 文件类似于

<dl>
    <dt>Question one</dt>
    <dd>Answer to question one</dd>
</dl>

我正在尝试根据 url 使页面跳转到一些问题。例如:www.example.com/faq#q11跳转到问题 11。我这样做是使用<span id='q11'>但我现在有其他问题。当我输入 url 时问题会打开,我的意思是如果我真的去www.example.com/faq#q11浏览器会带我到问题,但我必须单击它来切换答案。

我希望当我输入某个问题的 URL 时,它会自动切换该答案。

4

2 回答 2

1

把这是你准备好的功能:

if(window.location.hash)
    {
        //set the value as a variable, and remove the #
        var hash_value = window.location.hash.replace('#', '');
        //something like $('#'+hash_value).toggle();
    }

编辑:未经测试,但您可能会使用$(window.location.hash),因为window.location.hash已经包含 ID 选择器。

于 2013-09-08T20:16:46.910 回答
0

这通常使用路由服务\模块来完成,并且许多 MVC 框架都内置了路由服务。

如果您选择在没有 3rd 方库的情况下完成此操作,您可以创建一个简单的路由器函数来处理 DOMReady 上您网站的路由:

function ifRoute( Hashtag, Callback ){
    if (window.location.hash.indexOf( Hashtag ) != -1)
        Callback();
}

然后,在 DOMReady 上,您可以像这样使用它:

jQuery(document).ready(function(){
    ifRoute( 'q11', function(){
        //show answer...
        //do other cool stuff...
    });
});

这是一个非常简单的示例,只会对 DOMReady 有所帮助——但我希望它足以提供帮助,并且至少可以为您指明正确的方向。

于 2013-09-08T20:22:39.367 回答