简体   繁体   English

jQuery - 在页面加载时执行一个函数?

[英]jQuery - Execute a function on page load?

I want to add a class on my navigation bar when a page is loaded. 我想在加载页面时在导航栏上添加一个类。

Here's my try: 这是我的尝试:

$(document).ready(function(){

    $('index.php').load(function(){
        $("#etusivu").addClass("selected");
        $("#quartz").removeClass("selected");
        $("#raikastimet").removeClass("selected");
        $("#sisusta").removeClass("selected");
        $("#teipit").removeClass("selected");
        $("#vaimennusmatot").removeClass("selected");
    });

    $('quartz.php').load(function(){

        $("#etusivu").removeClass("selected");
        $("#quartz").addClass("selected");
        $("#raikastimet").removeClass("selected");
        $("#sisusta").removeClass("selected");
        $("#teipit").removeClass("selected");
        $("#vaimennusmatot").removeClass("selected");
    });

    $('raikastimet.php').load(function(){

        $("#etusivu").removeClass("selected");
        $("#quartz").removeClass("selected");
        $("#raikastimet").addClass("selected");
        $("#sisusta").removeClass("selected");
        $("#teipit").removeClass("selected");
        $("#vaimennusmatot").removeClass("selected");
    });

    $('sisusta.php').load(function(){

        $("#etusivu").removeClass("selected");
        $("#quartz").removeClass("selected");
        $("#raikastimet").removeClass("selected");
        $("#sisusta").addClass("selected");
        $("#teipit").removeClass("selected");
        $("#vaimennusmatot").removeClass("selected");
    });

    $('teipit.php').load(function(){

        $("#etusivu").removeClass("selected");
        $("#quartz").removeClass("selected");
        $("#raikastimet").removeClass("selected");
        $("#sisusta").removeClass("selected");
        $("#teipit").addClass("selected");
        $("#vaimennusmatot").removeClass("selected");
    });

    $('vaimennusmatot.php').load(function(){

        $("#etusivu").removeClass("selected");
        $("#quartz").removeClass("selected");
        $("#raikastimet").removeClass("selected");
        $("#sisusta").removeClass("selected");
        $("#teipit").removeClass("selected");
        $("#vaimennusmatot").addClass("selected");
    });

});

So I'm trying to add class="selected" when user clicks a link on navigation, and browser loads a new page. 因此,当用户单击导航上的链接并且浏览器加载新页面时,我正在尝试添加class="selected" But this isn't working. 但这不起作用。

Here's the navigation: 这是导航:

<ul id="navigation">';
        <li id="etusivu"><a href="index.php">Etusivu</a></li>
        <li id="quartz"><a href="quartz.php">Quartz-kalvot</a></li>
        <li id="raikastimet"><a href="raikastimet.php">Raikastimet</a></li>
        <li id="sisusta"><a href="sisusta.php">Sisusta</a></li>
        <li id="teipit"><a href="teipit.php">Teipit</a></li>
        <li id="vaimennusmatot"><a href="vaimennusmatot.php">Vaimennusmatot</a></li>
</ul>

That's not the correct usage of load method. 这不是load方法的正确用法。

.load( url [, data] [, complete(responseText, textStatus, XMLHttpRequest)] ) .load(url [,data] [,complete(responseText,textStatus,XMLHttpRequest)])

$(document).ready(function(){

  $('#navigation a').click(function(event) {
     event.preventDefault(); // prevents the default action of the event
     $(this).parent().addClass('selected').siblings().removeClass('selected');
     var url = this.href;
     $('#whereToLoad').load(url)
  })

});

Everything that you place within 你放在里面的一切

$(document).ready(function(){

    ...

});

... will be executed immediately at DOMReady for every document that contains that piece of code. ...将在DOMReady中立即执行包含该段代码的每个文档。 If you want to change the selected-class at that point, you could do something like: 如果要在此时更改选定的类,可以执行以下操作:

$('#navigation .selected').removeClass('selected'); // remove 'selected' class from all li's that have it
$('#id-of-current-page').addClass('selected');

Now, to find out which the current element is, you could for instance inspect location.href . 现在,要找出当前元素,您可以检查location.href However, seeing asyou're using PHP, I would really recommend just adding the selected class in the rendered HTML to begin with. 但是,看到你正在使用PHP,我真的建议只在渲染的HTML中添加选定的类开始。

What your code currently does is to fetch all those pages through AJAX requests immediately as the page loads, and then add and remove the selected class a lot for every response. 您的代码目前所做的是在页面加载时立即通过AJAX请求获取所有这些页面,然后为每个响应添加和删除所选的类。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM