该代码应该从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;
}
呈现页面时。