jquery和prototype的比较,以及冲突解决

初次试用jQuery,到底是prototype好还是jquery好?之前的项目已经使用了prototype,现加入jquery后,立刻罢工,搜了一下,还是有解决办法的(原文),不过最后我还是抛弃prototype,开始使用jquery了。

<script src=”prototype.js” mce_src=”prototype.js”></script>
<script src=”http://blogbeta.blueidea.com/jquery.js” mce_src=”http://blogbeta.blueidea.com/jquery.js”></script>
<script type=”text/javascript”>
      jQuery.noConflict();
</script>

注意:一定要先引入prototype.js 再引入jquery.js,先后顺序不可错。

如果先包含jQuery,将引起代码终止,作为提醒,jQuery将抛出一个异常:“You are overwriting jQuery, please include jQuery  last.”

 prototype中最方便的函数莫过于

<input id=”blueidea” value=”蓝色” type=”text” />
$(“blueidea”)   ===  document.getElementById(“blueidea”)    某id的对象

$F(“blueidea”)   ===  document.getElementById(“blueidea”).value   表单的值

如今使用jquery,这些都没有了。

$(“#id”) 这样虽然也可以获得某id的对象,但是不能对此id进行常规的js操作。(也许有方法,不过我还不会。)

例如

<input id=”blue” value=”蓝色” type=”text” />
<div id=”idea”>蓝色理想</div>

现在改为

id=”blue”的值”蓝色”改为 “经典”;
id=”idea”的节点文字”蓝色理想”改为”<b>经典论坛</b>”

prototype写法:
$(“blue”) .value=”http://blogbeta.blueidea.com/经典”;
$(“idea”).innerHTML=”<b>经典论坛</b>”;  或者
Element.update(“idea”, “<b>经典论坛</b>”);

这些都不能这么写,而要用

jquery写法:
$(“#blue”) .val(“经典”);

$(“#idea”).empty();    //先置空此元素
$(“#idea”).append(“<b>经典论坛</b>”);    //再添加新的字符串

如果你把prototype换成jquery了,但是还想使用prototype中的方便函数

建议自己定义两个函数

function $G(id){
 return document.getElementById(id);
}
function $F(id){
 return $G(id).value;
}

以前的javascript思想要改变了,用了jquery一切就要jquery的规范来,好处就是不用担心浏览器兼容性了,反正用的是jquery的函数,不兼容就是他的问题了,如果是自己随意写,就有浏览器的兼容性问题。

目前为止prototype最方便就是有chm手册,查询起来很方便,而jquery只有英文的api文档,虽然也不错,但还是期待jquery的中文chm。

此条目发表在 交互设计, 程序 分类目录。将固定链接加入收藏夹。

jquery和prototype的比较,以及冲突解决》有 4 条评论

  1. nick 说:

    function $G(id){
    return document.getElementById(id);
    }
    function $F(id){
    return $G(id).value;
    }

    没有必要,jq里直接可以
    $(obj).get(0) == 你的$G
    $(obj).val() == 你的$F

  2. owen 说:

    之前是刚接触jquery,没发现这个函数,现在用起来,感觉能想到的,jquery都已经想好了,直接用他的函数来处理就可以了,都很少用到传统的js代码了。

  3. CSS 说:

    恩,根据以上的修改还是有点错误啊。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>