列表中最后一个元素样式清除修改方法(jQuery)

我们在做动态网站的时候,当遇到导航条的栏目列表或某区域内文章列表等含有大量重复内容区域时,通常会用循环将他们输出,而他们节点的样式都是相同的,比如下边距,外边框的分隔样式,通过循环输出的结果就是最后一个节点依然保留着所有的样式我们是不希望他有下边距或者外边框.

例如: 导航上每个栏目标题(li)右侧可能会用竖线分隔每个栏目标题,于是最后一个栏目右侧也出现了不想要的竖线,但是这些同级的li都是循环出来的 ,我们无法单独给最后一个元素添加特殊的样式,本来有个很简单的方法,那就是使用CSS3的:first和:last选择器,但是当IE6和IE7不支持:first和:last选择器的,有个简单的方法,通过Js(本文用的jQuery)去除或修改列表或循环内容的第一个和最后一个节点的样式,可以兼容所有浏览器,是比较方便的,其实用js可以轻松实现,但是我后来发现,jQuery来处理或许更加轻松些,也是正好我最近在学习jQuery,的确很好用.在body内最后加上一小段就可以了,比如下面这个简单的例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>LastChildStyleRemove</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<style>
#mainContent {background-color:#eee;}
#mainContent ul.nav {list-style:none;font-size:12px;}
#mainContent ul.nav li {float:left;padding:5px 15px;border-left:1px solid #fff;border-right:1px solid #ddd;}
#mainContent ul.nav li a {color:#666;text-decoration:none;}
</style>
</head>
<body>
	<div id="mainContent">
		<ul class="nav">
			<li><a href="#">导航一</a></li>
			<li><a href="#">导航二</a></li>
			<li><a href="#">导航三</a></li>
			<li><a href="#">导航四</a></li>
		</ul>
		<div style="clear:both;"></div>
	</div>
</body>
<script>
	$("#mainContent ul.nav li:first-child").css("border-left", "none")
	$("#mainContent ul.nav li:last-child").css("border-right", "none")
</script>
</html>

这个例子除了用到最后一个元素样式清除,也用了首个元素样式清除,这个很好理解,这是两个方法,其实只用到一个函数css( propertyName , value  ),而关于元素选择器可以查看jQuery的例子::first-child Selector:last-child Selector.上面的例子也很简单清晰易懂…

当然我也在网上看到有这样的javascript写法,不过相对较为复杂,内容如下:

<script language="javascript" type="text/javascript">
  function addClassName(tag,classname){
   if(!tag.className){
    tag.className=classname;
   }else{
    tag.className+=" "+classname;
   }
  }

  function addFirstChild(){
   var olitems=document.getElementsByTagName("ol");
   var ulitems=document.getElementsByTagName("ul");

   for(var i=0;i<olitems.length;i++){
    addClassName(olitems[i].getElementsByTagName("li")["0"],"first-child");
   }
   for(var i=0;i<ulitems.length;i++){
    addClassName(ulitems[i].getElementsByTagName("li")["0"],"first-child");
   }
  }
  function addLastChild(){
   var olitems=document.getElementsByTagName("ol");
   var ulitems=document.getElementsByTagName("ul");

   for(var i=0;i<olitems.length;i++){
    addClassName(olitems[i].getElementsByTagName("li")[olitems[i].children.length-1],"last-child");
   }
   for(var i=0;i<ulitems.length;i++){
    addClassName(ulitems[i].getElementsByTagName("li")[ulitems[i].children.length-1],"last-child");
   }
  }

  if(document.all && !window.opera){
   window.onload=addFirstChild;
   window.onload=addLastChild;
  }
 </script>

如果有兴趣可以尝试,至此,大家也发现实际上用jQuery并不困难,用好就有讲究了,不过最好还是打好js的基础,下次我将介绍另外一个简单的效果,关于用jQuery控制下拉菜单悬浮,我用了一个很笨的嵌套方法,有空我在写一下.今天就写到这里希望大家能有所收获.


PS: 其实这个例子就是简单介绍了jQuery的两个用法,如果动态脚本支持判断首尾元素的话,其实直接在HTML内写个判断(例如:phpcms文章列表循环不同样式制作方法),给首尾元素加个class=”first-tag”和class=”last-tag”之类的样式也是不错的选择,实际上现在已经不推荐这样的写法,因为你会发现有很多冗余的小代码,维护十分不方便,这里也就是举一反三,大家视情况来写吧( update: 2014年5月17日 )

PHPCMS无法搜索文章内容中的关键字解决

最近工作上维护公司的网站,其后台用的是PHPCMS V9,以前曾用过PHPCMS2008,用这个还算能够快速上手.不过使用过程中也有很多问题,比如这个最近网站遇到的搜索功能的问题,经常搜不到文章,除非是标题或者关键字有相同的,而文章内容部分是搜索不到的,编辑需要找相关文章来进行SEO优化也不是很方便,于是我便研究了一下PHPCMS自带的搜索功能,首先要说的是后台可以对搜索进行设置和调整的区域主要包括

  1. 模块 > 模块管理 > 全站搜索 > 模块管理 > 全站搜索
  2. 内容 > 内容相关设置 > 模型管理 > 文章模型字段管理

第一个很简单,直接查看模块配置,如果没有选中全站搜索的果断选中,这样可以避免一些搜索不到信息的情况,后面两个我也选中是了,至于选不选,看个人需要了.提交之后建议重建索引,这里需要提到的是,有时候重建索引出错,出错内容大致是这样的

MySQL Query : DELETE FROM 'phpcmsv9'.'v9_search' WHERE 'siteid' = '1'
MySQL Error : Incorrect key file for table '.\phpcmsv9\v9_search.MYI'; try to repair it
MySQL Errno : 126
Message : Incorrect key file for table '.\phpcmsv9\v9_search.MYI'; try to repair it
Need Help?

这个解决办法也十分简单,同样在后台找到 扩展 > 扩展 > 数据库工具 > 请选择数据链接池处选择数据库后,会展现出该数据库的结构,找到v9_searchv9_search_keyword表,后面有修复,点击修复,然后重新回到重建索引处,就不会出错了.

另一方面如果有些关键字是你需要在搜索结果中显示的,比如作者,内容等等,先说如何搜索到作者吧,找到 内容 > 内容相关设置 > 模型管理 > 进入文章模型字段管理,找到作者字段,点击修改,在下面单选选项处可以看到作为搜索条件,此选项,选择即可.

同样的,内容字段也是这个方法,不过有个问题,内容字段的作为搜索条件处是灰色不可更改,这要怎么办是好?这种情况下,如有需要,那就要强行修改数据库内的值了,以内容字段为例,打开数据库,这里我用的phpmyadmin,找到相应数据库的表v9_model_field,找到其中name内容(fieldcontent)的地方,点击编辑,其中有个字段叫做issearch,当前值为0,于是我们将它修改为1即可.再次返回后台,会发现作为搜索条件已经是了.

此时,你可以尝试搜索一些关键字,会发现问题得到解决,如果你还有什么问题,可以发电子邮件给我,我会抽时间与你一起讨论.

好了暂时写到这里,谢谢大家的关注.如果想了解sphinx全文索引可以看一个PHPCMS官方论坛的帖子,写的不错,点击进入phpcms中应用sphinx全文索引

wow!龙年开篇了~

大家龙年好,我这个年拜的毫无诚意,倒不如说提前祝女人三八妇女节快乐==!

闲话少谈,从去年起就说想换套衣服来个新造型,一直都没有实施,不由想起以前老总经常说的一句话,要提高执行力…前些日子在网上找了不少主题,没有看到满意的,就这个还稍看得过去,个人喜欢简约的精美设计,虽然我这个改良版的主题没有感觉到很棒,不过就现在的水平来看,马马虎虎了,年后的这些日子发生了许多事情,我的很多想法在不断的改变,我自己经常飘忽不定拿不准主意,生活状况并不乐观.而目前仍身处水深火热之中,最近很忙,家中也没有宽带了.只好本地测试,准备抽时间去网吧上传到服务器配置好,虽然网站本身就没有什么访问量,一只是300W+的排名,前天去看,居然800W+了,也不知道上个月我搞了啥,才发现网站描述和关键字什么的都没有了,简直让人疯掉.这不得不尽快找时间把新网页上传,早日恢复到300W+(看了我就这点追求了).

其实通过写博文维护博客这件事情上也能看出一个人的习惯,性格,像我这样懒散,毅力较差的人,总是一回搞这一会搞那,看来,坚持写博客才是锻炼人的啊!

今年是我的本命年,希望能有所作为,虽然时间过去了一个月,不过相信今年坚决不能让自己再次失望.

(PS:博客主题首次修订版本MxS2-Spring 1.2.0,基于MxS2由Whidy重新修改设计,根据我的个人喜好进行了适当修改,并本地化了大部分CSS内容,函数部分略有修改,此主题仅供个人学习使用…此主题无法全面支持IE6!(Theme Redesigned by Whidy on the basis of MxS2)原作者:Axiu.对了最近小熊研究AI重新设计upour logo不知道是个啥情况了.话说我也想换个LOGO了.吼吼…)

新年总得有些变化,新衣裳筹备中…

继上一次闹眼子的更新网站到现在迷茫许久(点击见原文),混了许久的日子…这次终于要换衣裳了,先换css,至于功能什么方面的,慢慢来吧. 随后我会写点相关最近我的总结,嘿嘿~

(时隔数日)上次 说写什么来着,也不记得了.看来只能写点琐碎的了,本来是准备改造一下的,这前几天显卡坏了,目前只能处于没有安装显卡驱动的状态下使用电脑,分辨率都是1280*1024,看着超级别扭.,等吴刚朋友的二手显卡,等了几天了,也不知道啥时候能到,今年恐怕到不了了,博客暂时也就不好弄了,明年再说吧.

提前祝大家新年快乐!

网站更新中…

晚上看到原来的主题有更新,于是更新了一下,发现居然连网站描述什么的全都没有了,看来以前对主题进行过二次开发的修改的也全部替换成了官方原版了,这下可惨了,因为只有本地有几个月前的备份,还原起来很麻烦,看来这次真的要动手自己设计主题了…
最近博客也不会更新什么,就静静等待新版的博客到来吧…(或许一等又是一个春夏秋冬==!~)