0

我用 Jquery 制作了一个函数,当我单击它时会更改链接颜色...当我将链接链接到 #(hash) 时,代码工作得很好,但我将它与 php 混合它不会工作?

这是我的 PHP,它工作得很好:

<?php
    $pages_dir = 'pages';
    if (!empty($_GET['p'])) {
        $pages = scandir($pages_dir, 0);
        unset($pages[0], $pages[1]);
        $p = $_GET['p'];
        if (in_array($p.'.inc.php', $pages)) {
            include($pages_dir.'/'.$p.'.inc.php');
        } else {
            echo '******.';
        }
    } else {
        include($pages_dir.'/hjem.inc.php');
    }
?>

我的 HTML 中的链接也可以正常工作:

href="index.php?p=*********"

但现在我想应用一种效果,使我的链接的背景颜色与 i OnClick 效果不同:

$(document).ready(function(){
        var $targetElement = $("*** This is to my links ***");
        $targetElement.click(function() {
            $targetElement.removeClass("changeColor")
            $(this).addClass("changeColor");
    });
});

还有一些CSS:

#****** ul li a:link.changeColor{
    background-color:black;
}

Jquery 仅在我将链接指向 # 时才有效,并且我当然希望它可以与我的 php 代码一起工作:)

4

2 回答 2

0

单击链接时,浏览器会重定向到链接的 href。

您有 2 个选项:

1)一切都将由 AJAX 完成 - 您将通过 ajax 加载请求页面的内容,然后您将停止传播点击事件,因此浏览器不会重定向。您可以通过false从事件处理程序返回或调用e.preventDefault().

2)使用CSS:

ul li a:active {
    background-color:black;
} 
于 2013-01-15T08:02:47.580 回答
0

防止锚元素的默认事件,所以改变:

$targetElement.click(function() {
  $targetElement.removeClass("changeColor")
  $(this).addClass("changeColor");
});

$targetElement.click(function(e) {
   e.preventDefault(); 
   //get href tag and load content
   var $this = $(this), href = $this.attr("href"), $that = $this;
   $("#someElementId").load(href, function() {
       $targetElement.removeClass("changeColor")
       $that.addClass("changeColor");
   });
});

你的意思是这样的吗

于 2013-01-15T08:01:31.687 回答