该代码应该从ul中间单击的锚标签中获取ID为“ links”的ID,然后将该ID用于整个页面的其他目的,但是警报显示我一直在获取“ undefined”好像该元素没有id。我仔细检查了我的源代码,它们确实有ID,所以我不确定是什么问题。

$(function() {
    $('ul#links > li > a').click(function() {

        var planet = $(this).id;
        alert(planet);
        $('#planet').removeClass();
        $('#planet').addClass('planet');

        var bg = 'black url(../img/' + planet + '.jpg) fixed no-repeat center';
        alert(bg);
        $('body').css('background', bg);
    });
});


同样,此Jquery函数也被用作处理这种情况的Javascript方法。我已经实现了一个PHP解决方案,其中涉及将其重定向到一个快速脚本,该脚本设置一个cookie,并将用户返回到上一页,然后使用该cookie加载新的CSS。在禁用JS的情况下,是否可以使用该方法作为JS方法的备份?

页面-http://schnell.dreamhosters.com/folio/

最佳答案

您非常接近:

$(function() {
  $('ul#links > li > a').click(function() {
    var planet = this.id;
    $('#planet').removeClass().addClass("plane");
    var bg = 'black url(../img/' + planet + '.jpg) fixed no-repeat center';
    $('body').css('background', bg);
    return false;
  });
});


首先,this.id将为您获取ID。 jQuery替代品是$(this).attr("id")

其次,可以链接addClass()removeClass()来保存两次查找元素。这对于您的问题不是必需的,而是一种很好的做法。

第三,除非您希望链接遍历某处,否则您需要阻止默认操作(通过对传递给回调的事件对象调用evt.preventDefault())或简单地以return false;结尾(也执行evt.stopPropagation())。

最后,您正在执行的操作非常适合禁用Javascript,因为您可以转到执行相同操作的页面。我不会理会设置cookie和重定向。如果脚本名称URI为/view/planet.php,请执行以下操作:

<a id="saturn" href="/view/planet.php?planet=saturn">Saturn</a>


在相同的脚本中,您可以执行操作(我在这里假设使用PHP;我没有提到您使用的内容):

$planets = array(...);
$planet = $_GET['planet'];
if (in_array($planet, $planets)) {
  echo <<<END
<style type="text/css">
body { background: black url(.../img/$planet.jpg) fixed no-repeat center; }
</style>
END;
}


呈现页面时。

10-07 13:25
查看更多