我有一个网站,我在PHP建设,并有一个页面,从mySQL动态加载数据。它使用用户单击的列表项,导致对数据库的_POST,因此不允许我自定义他们现在看到的页面的CSS。我想知道是否有一种方法可以动态设置他们点击的<li>
的css类,以突出显示它。问题是,如果他们按下另一个列表项,我必须取消突出显示旧项。有人有什么建议吗?
假设您通过AJAX提交POST请求,添加如下内容(我将假设您已经完成了AJAX部分)
// var context is a previously identified container for the list items
var items = context.getElementsByTagName('li');
for (var i = 0; i < items.length; i++) {
items[i].addEventListener('click', function() {
// do AJAX stuff
// remove the "highlight" class from all list items
for (var j = 0; j < items.length; j++) {
var classname = items[j].className;
items[j].className = classname.replace(/'bhighlight-class-name'b/i, '');
}
// set the "highlight" class on the clicked item
this.className += ' highlight-class-name';
}, false);
}
这里的演示- http://jsfiddle.net/jYdMB/
似乎您正在使用Ajax。JS脚本可以做到这一点。下面是我将如何尝试在JS
- 创建具有唯一id的列表
- 使用jquery/prototype/xyz toolkit将点击事件绑定到这些列表
- 一旦收到点击,我就会查看事件目标,并尝试在其上设置或重置类名
为了进一步阅读,我建议使用jQuery编写这个示例
jQuery答案:http://jsfiddle.net/qYUAz/
<style type="text/css">
#myNav .active{
color:red;
font-weight:bold;
}
</style>
<ul id="myNav">
<li><a href="#1">link 1</a></li>
<li><a href="#2">link 2</a></li>
<li><a href="#3">link 3</a></li>
</ul>
<script type="text/javascript">
$('#myNav a').click(function(){
$('#myNav a').removeClass('active');
$(this).addClass('active');
});
</script>