Just Write Down

2009-4-15 评论(2) 分类:生活

Recently, I’m living  in  ordinary days. I felt nothing special, just staying in school, attending class, skipping class, and sitting in front of the computer. Saturday and Sunday are the same as other days in my mind, nothing difference.  I didn’t  have so much pressure,  and lack of enthusiasm.

Previously, I just wanted to learn the skill of website development for I can find a good job after graduate. Of course, I’m interested in it too. Afterwards, I found that society is farer away than that. maybe I have just seen the tip of an iceberg. I realize what kind of skill is useful in society. They are like communication and flexible mind. unfortunately, I’m not good at this kind of skill.

Many people told me that personal network is important。one  should try to be friends  with more and all kinds of people. But I haven’t do that frequenly. I seldom make friends initiatively. Those guys who I had contacted with before are not so  familiar. while time passed, we just became stangers.

In this few days, sometimes I feel lazy to coding and  just browse website and blog, and didn’t know what should I do and  feeling wasting of time.  But what’s wasting of time? Is studing all days, working all days, improving ourselves, preparing for the future, that is  so  called “I haven’t wasted  of time”? I don’t know, I think that living is just living.  hard learning is always right, but sometimes considering too much about future is unnecessery。The  future is  full of uncertain  things. It’s hard to prepare. We should just live for nowadays instead of living for future.

Writing in English is hard for me, but it seems that I should learn writing and chating in English, not just reading.

[翻译]改善你的jquery—25条jquery实用技巧<二>

2009-4-12 评论(3) 分类:技术文章 Tags:

上一篇: 改善你的jquery—25条jquery实用技巧<一>

11.适当地使用动画效果

我第一次使用jQuery的时候就喜欢上了像slideDown()、fadeIn()等这些预定义的动画函数,使用它们可以很简单地做出很酷的动画效果。jQuery的animate()函数的强大和易用让人很容易进一步实现更好的效果,事实上,如果你看了jquery的源代码你会发现fadeIn()、slideDown()等这些函数的内部都使用了animate()函数,它们只是让animated()更易使用。

slideDown: function(speed,callback){
return this.animate({height: &quot;show&quot;}, speed, callback);
},

fadeIn: function(speed, callback){
return this.animate({opacity: &quot;show&quot;}, speed, callback);
}

animate()函数只是简单地接收所有的CSS属性,平滑地把属性从一个值转换到另一个值,形成动画。你可以使用它平滑地改变任何你想改变的属性,如width, height, opacity, background-color, top, left, margin, color, font-size等等。

下面这段简单的代码实现了当鼠标放在菜单上时菜单上所有列表元素的高度都平滑地改变到100px。

$('#myList li').mouseover(function() {
$(this).animate({&quot;height&quot;: 100}, &quot;slow&quot;);
});

animation函数不像jquery的其他函数,它是自动队列的,即如果你想在一个效果执行完后接着执行另一个效果,只需要连续使用两次animate函数,无需任何回调。

$('#myBox').mouseover(function() {
$(this).animate({ &quot;width&quot;: 200 }, &quot;slow&quot;);
$(this).animate({&quot;height&quot;: 200}, &quot;slow&quot;);
});

如果你想让两个动画同时执行,把参数放在一个object里,调用一次即可:

$('#myBox').mouseover(function() {
$(this).animate({ &quot;width&quot;: 200, &quot;height&quot;: 200 }, &quot;slow&quot;);
});

你可以传入值是数字的属性形成动画,如果要传入非数字的属性,那就要使用插件,例如平滑过渡颜色效果的插件:Color Animations

12.学习事件委托

使用jQuery可以很容易地为DOM元素绑定事件,但如果绑定太多事件会让程序效率降低,事件委托可以让你可以让你绑定更少的事件但达到同样的效果,解释事件委托最好的办法是通过例子:

$('#myTable TD').click(function(){
$(this).css('background', 'red');
});

这是一个简单的函数,为表格的所有单元格绑定事件,当鼠标点击单元格即变红色,假设表格有50行10列,那么总共绑定了500个事件。如果我们能值为table绑定一个事件,让事件处理函数找出所点击的单元格,再让它变成红色,那是再好不过的了。事实上,这就是事件委托,也是我们接下来要做的:

$('#myTable').click(function(e) {
var clicked = $(e.target);
clicked.css('background', 'red');
});

参数”e”包含了所有关于event信息,包括了实际接收鼠标点击的元素,我们所需要做的就是检查鼠标点击的是哪个单元格,非常简洁。

事件委派还有一个好处。当你为一个块(表格、列表或div块等)里所有的元素绑定事件,当增加元素到这个块里,新增加的元素并不会自动绑定事件,如果使用事件委托,事件绑定后即使新增加元素也可以正常工作。

13.用class保存状态

这是html块保存状态最基本的方法,jQuery擅长通过class操纵元素,因此如果你想储存状态信息,为什么不创建一个额外的的class去保存它呢?

这是一个例子,我们想创建一个可展开的菜单,点击按钮时如果面板是关闭的,则调用slideDown(),如果是打开着则调用slideUp(),先看看HTML:

&lt;div class=&quot;menuItem expanded&quot;&gt;
   &lt;div class=&quot;button&quot;&gt;
        click me
    &lt;/div&gt;
    &lt;div class=&quot;panel&quot;&gt;
        &lt;ul&gt;
            &lt;li&gt;Menu item 1&lt;/li&gt;
            &lt;li&gt;Menu item 2&lt;/li&gt;
            &lt;li&gt;Menu item 3&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/div&gt;
&lt;/div&gt;

很简单,我们添加一个额外的class属性,目的只是为了说明元素现在的状态。添加后,我们要做的只是添加鼠标点击时执行slideUp()和slideDown()的事件处理函数。

$('.button').click(function() {

var menuItem = $(this).parent();
var panel = menuItem.find('.panel');

if (menuItem.hasClass(&quot;expanded&quot;)) {
menuItem.removeClass('expanded').addClass('collapsed');
panel.slideUp();
}
else if (menuItem.hasClass(&quot;collapsed&quot;)) {
menuItem.removeClass('collapsed').addClass('expanded');
panel.slideDown();
}
});

这是个很简单的例子,只作演示用,通过添加额外的class,你可以储存各种各样的值在HTML元素里。

然而,大多数情况下,使用下一条技巧里的方法更好。

14.使用jQuery的内部函数data()储存状态

jQuery有个内部函数data()可以用来在任何DOM元素上储存键/值形式的数据,因为一些原因,这个函数并没有很好的文档说明。储存数据就像下面写的这样简单:

$('#myDiv').data('currentState', 'off');

我们可以改良上一个例子的程序,我们仍然使用同样的HTML(但去掉class”expanded”),使用data()储存状态:

$('.button').click(function() {

var menuItem = $(this).parent();
var panel = menuItem.find('.panel');

if (menuItem.data('collapsed')) {
menuItem.data('collapsed', false);
panel.slideDown();
}
else {
menuItem.data('collapsed', true);
panel.slideUp();
}
});

我想你会同意,这样写比之前更简洁。要了解更多关于data()与removeData(),看这里:jQuery internals

15.创建自定义选择器

jQuery有很多内置的选择器可以通过id、class、标签、属性等查找元素,但如果你想通过其他jQuery里没有的方式查找元素,该怎么做?

或许可以在选择之前为元素添加一个class属性再进行选择,但其实扩展jQuery写新的选择器并不难。下面我们通过例子来说明:

$.extend($.expr[':'], {
over100pixels: function(a) {
return $(a).height() &amp;gt; 100;
}
});

$('.box:over100pixels').click(function() {
alert('The element you clicked is over 100 pixels high');
});

第一部分代码创建了一个新的选择器,用来查找高度大于100像素的元素。第二部分代码使用这个新选择器为所有符合条件的元素添加click事件。

关于自定义选择器在这里就不多说了,你可以上google搜索“custom jquery selector”,肯定能找到很多很好的例子。

16.合理化你的HTML,并在页面载入的时候修改它

这个标题看起来似乎没什么意义,但实际上这个技巧不仅可以让你的代码变得整洁,还可以减少页面的大小,对SEO也有帮助。看看下面的HTML:

&lt;div class=&quot;fieldOuter&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;
        &lt;div class=&quot;field&quot;&gt;This is field number 1&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;errorBar&quot;&gt;
        &lt;div class=&quot;icon&quot;&gt;&lt;img src=&quot;icon.png&quot; alt=&quot;icon&quot; /&gt;&lt;/div&gt;
        &lt;div class=&quot;message&quot;&gt;&lt;span&gt;This is an error message&lt;/span&gt;&lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;fieldOuter&quot;&gt;
    &lt;div class=&quot;inner&quot;&gt;
        &lt;div class=&quot;field&quot;&gt;This is field number 2&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;errorBar&quot;&gt;
        &lt;div class=&quot;icon&quot;&gt;&lt;img src=&quot;icon.png&quot; alt=&quot;icon&quot; /&gt;&lt;/div&gt;
        &lt;div class=&quot;message&quot;&gt;&lt;span&gt;This is an error message&lt;/span&gt;&lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

上面是一个表可能的结构,为了作为例子稍微做了下修改,我想你一定会觉得上面这段代码十分难看,如果表里有很长的内容,页面将会很长,重复元素也很多。如果只是放下面这段代码到你的页面,会更好:

&lt;div class=&quot;field&quot;&gt;This is field 1&lt;/div&gt;
&lt;div class=&quot;field&quot;&gt;This is field 2&lt;/div&gt;
&lt;div class=&quot;field&quot;&gt;This is field 3&lt;/div&gt;
&lt;div class=&quot;field&quot;&gt;This is field 4&lt;/div&gt;
&lt;div class=&quot;field&quot;&gt;This is field 5&lt;/div&gt;

我们需要做的只是使用jQuery做一点点处理,把之前那些需要重复的的HTML代码加进来,像这样:

$(document).ready(function() {
    $('.field').before('&lt;div class=&quot;fieldOuter&quot;&gt;&lt;div class=&quot;inner&quot;&gt;');
    $('.field').after('&lt;/div&gt;&lt;div class=&quot;errorBar&quot;&gt;&lt;div class=&quot;icon&quot;&gt;
        &lt;img src=&quot;icon.png&quot; alt=&quot;icon&quot; /&gt;&lt;/div&gt;&lt;div class=&quot;message&quot;&gt;
        &lt;span&gt;This is an error message&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;');
});

不建议经常使用这个技巧,使用了它,在页面载入时会有闪烁的现象,但在有很多重复的HTML元素的情况下,这个技巧能有效地减小你页面的大小,对SEO也有好处,因为除去了很多重复无关的元素。

译者注:如果要考虑向后兼容,即考虑没有javascript的浏览器,任何情况下都不应该这样使用。

17.通过延迟加载内容提高速度和SEO友好度

还有另一个方法,可以加快页面载入,使爬虫蜘蛛抓取的页面更整洁,就是在页面其他部分载入完成后,再用AJAX载入内容。用户能看到正常的一面,爬虫蜘蛛也能只抓取到你想让它抓取的内容。

我们已经在自己的网站上使用这个技巧了,上面那些紫色的按钮能打开3个表单,一个导航和一个google map,这些都会让页面大小加倍,所以,我们把上面那些全部放在一个静态的HTML文件里,当页面读取完毕时再使用load()读取这个文件获得这部分元素,像这样:

$('#forms').load('content/headerForms.html', function() {
// 内容读取完毕时执行这里的代码,只执行一次
// 把所有事件处理程序都放这里
});

我不会到处使用这个技巧,你应该考虑它的优缺点,它会增加对服务器的请求,你的页面刚打开时载入的部分不能马上使用,但如果能正确地使用,它会是一个很好的优化技巧。

18.使用jQuery里的工具函数

jQuery里有很多实用的函数,填补了javascript的空白。

函数API见这里

特别地,浏览器对javascript里一些数组函数的支持并不好(IE7甚至不支持indexOf()),jQuery有迭代、筛选、复制、合并和去除重复元素这一系列针对数组的函数。

其他在javascript很难实现的功能,像获取下拉列表的值,在传统javascript里,必须使用getElementById获取<select>元素,再获取它所有的子元素,迭代检查它们有没有selected,十分繁琐。而使用jQuery很容易就能获取:

$('#selectList').val();

很值得花一点时间仔细看看jQuery文档,探索那些相对少人知道的函数。

19.同时使用多个框架时,用noconflict重命名jQuery对象

大部分javascript框架使用符号$作为记号,当页面上使用了超过一个框架时,这会产生冲突。幸运的是有一个很简单的解决方法,nofonflict()函数让你能自定义jQuery的名字:

var $j = jQuery.noConflict();
$j('#myDiv').hide();

20.怎样提示图片已经加载完毕

这个问题似乎没有怎么被提及到,但这在做相册的时候是很常见的问题,其实这个问题很简单。

你需要做的只是在<img>标签上使用.load()函数,给它一个回调函数。下面的例子改变了<img>标签的”src”属性,载入一张新的图片,并为它加了一个简单的load()函数。

$('#myImage').attr('src', 'image.jpg').load(function() {
alert('Image Loaded');
});

你会发现图片载入完毕时提示框会弹出。

21.总是使用最新版本

jQuery一直在改进,它的创建者John Resig一直在寻找方法改进jQuery性能。

jQuery现在的版本是1.2.6(翻译时已经是1.3.2),但john透露它在开发一个新选择器引擎:Sizzle 。它能提升选择器的效率,在firefox里能达到4倍。所以,应该使用最新版本以获得更好的性能。

译者注:sizzle引擎已经开发完成,jquery1.3已经使用此引擎,sizzle主页:http://sizzlejs.com/

22.怎样检查元素存在

在你操纵一个元素前你不需要检查那个元素是否存在,因为如果你选择的元素不在DOM里jQuery不会做任何事。但如果你需要检查是否有元素被选择了,或者检查有多少个元素被选择,你可以使用length属性。

if ($('#myDiv).length) {
// 你的代码
}

很简单,但并不易见。

23.用js向HTML标签添加一个class属性

我是从Karl Swedberg的两本书 (1) (2) 里学到这招。

他在我最近的一片文章的评论里提到这个技巧,它的原理是这样的:

首先,jQuery加载完成后用它为<HTML>标签增加一个名为”JS”的class属性:

$('HTML').addClass('JS');

因为这只会在javascript可用的情况下发生,所以你可以利用它添加只有javascript可用时才有的css属性,像这样:

.JS #myDiv{display:none;}

这意味着,当javascript可用时我们可以隐藏一些内容,再在需要时用jQuery让它显现,而javascript不可用时(以及搜索引擎抓取页面时),内容并没有隐藏,用户能正常看到那些内容。我会在以后经常使用这个技巧。

可以来这里读取Karl Swedberg关于这个例子的全文:

24.返回”false”阻止默认行为

这可能是显而易见的,但有时候却不是,如果你习惯这样做:

&lt;a href=&quot;#&quot; class=&quot;popup&quot;&gt;Click me!&lt;/a&gt;

然后给它绑定一个事件,像这样:

$('popup').click(function(){
// Launch popup code
});

它会很好的工作,直到你在一个长页面使用它,才会发现问题,你会发现”#”使鼠标点击它时自动返回页面顶部。

你需要做的是阻止它的默认行为,在事件处理函数里添加”return false”可以阻止任何事件的任何默认行为:

$('popup').click(function(){
// Launch popup code
return false;
});

25.缩写ready事件

这是个很小的技巧,可以通过缩写函数$(document).ready为你腾出几个字节的空间。

可以把

$(document).ready(function (){
// your code
});

缩写成这样:

$(function (){
// your code
});

后话

终于翻译完了,好长的文章,真佩服他这么有耐性写这么长的文章。似乎我耐心还是不够,一口气是翻译不了那么长的,分了好几个次。第二部分代码还没排版,没有缩进,以后再修改。

[翻译]改善你的jquery—25条jquery实用技巧<一>

2009-4-8 评论(2) 分类:技术文章 Tags:

原文链接:Improve your jQuery – 25 excellent tips

jquery是令人惊叹的框架,我已经使用它一年多了,我发觉使用它的时间越长,就会越喜欢它,也越理解它内部的工作原理。

我不是一个jquery专家,我也不奢求成为专家,所以如果这篇文章里出现一些错误我非常乐意接受大家的批评和改正。

我常常称自己为jquery中级使用者,我一年以来学到的、总结出来的技巧和技术,应该可以让一些人从中获益。

1.从google code载入jquery

Google挺久以前就开始提供各种javascript库供使用者载入,从google载入javascript框架相对于直接从自己的服务器载入有许多优势,首先它节省了自己服务器的带宽,从google载入也十分快,最重要的是如果用户之前已经访问过其他从google载入javascript库的网站,再访问你的网站时直接从缓存里取出即可,无需再次请求,会大大加快载入速度。

这很有意义,有多少网站储存着同一个版本的jquery呢,它们都没有被缓存。从google载入jquery是很容易做到的:

&lt;script src=”http://www.google.com/jsapi”&gt;&lt;/script&gt;
&lt;script type=”text/javascript”&gt;

    // 载入jQuery
    google.load(”jquery”, “1.2.6″);

    google.setOnLoadCallback(function() {
    //代码放这里
    });

&lt;/script&gt;

或者,你也可以直接包含jquery对应的网址,像这样:

&lt;script src=”http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js” type=”text/javascript”&gt;&lt;/script&gt;

完整的说明在这里

2.使用参考表(cheat sheet)

这不仅仅是个关于jquery的建议,对于很多语言,都有相应的很好的参考表,它很方便地把所有函数都列在可打印的A4格式的文档上,对于jquery1.2,下面这两个网址给出了两个很好的参考表:

http://www.gscottolson.com/weblog/2008/01/11/jquery-cheat-sheet/
http://colorcharge.com/jquery/

3.组合你所有的代码并压缩它们

嗯,这本来是一个普遍的javascript的建议,但任何使用jquery的大项目通常都会使用很多插件,所以这条建议也适用于jquery。

现在的浏览器不能同时载入几个脚本,这意味着如果你一次载入很多个脚本,会减慢载入网页的速度,所以,如果你的脚本需要载入到所有页面上,就可以考虑把你所有的代码放在一起,然后压缩它们。

有一些插件脚本已经被压缩过,你要考虑的是那些没有被压缩过的脚本。压缩脚本需要花费的时间很少,个人来说,推荐Dean Edwards制作的Packer这个工具。

4.使用firebug的控制台记录工具

如果你还没有安装firebug,那应该立即去下载。它除了提供其他一些常用的功能例如检查http传输和查找CSS错误外,还有优秀的控制台记录命令让你能轻易地检测脚本里的错误。

这里有这个功能的详细介绍

我个人喜欢的功能是“console.info”,它能输出信息或变量,代替了弹出窗口的alert,还有“console.time”让你轻易地在一段代码间设置一个计时器,得出执行这段代码所用的时间。这些console命令都很容易使用:

console.time('create list');

for (i = 0; i &amp;lt; 1000; i++) {
var myList = $('.myList');
myList.append('This is list item ' + i);
}

console.timeEnd('create list');

这个例子我故意写了一些效率很低的代码,在接下来几条技巧/建议里,我会说明如何使用这个计时器展示代码的改进。

5.通过暂存减少选择器的使用

jquery选择器让人赞叹,它以难以置信的简单方式选择页面上任何元素,但在其内部,选择器需要做大量的工作,所以如果大量使用选择器,你会发现程序开始变得很慢。

如果你多次地选择同一个元素(例如在一个循环里),你可以只选择它一次并赋给一个变量,再在你的核心代码里使用它。下面这个例子我们通过循环添加元素到一个无序列表里。

for (i = 0; i &amp;lt; 1000; i++) {
var myList = $('.myList');更能描述问题
myList.append('This is list item ' + i);
//译者注:我觉得直接用$('.myList').append('This is list item ' + i),去掉myList更能说明问题
}

这在我的电脑里用firefox3花费了1066毫秒(想象下如果是IE6将会是多长时间!),这在javascript来说是很慢的。现在我们看看下面的代码,只使用选择器一次:

var myList = $('.myList');

for (i = 0; i &amp;lt; 1000; i++) {
myList.append('This is list item ' + i);
}

只花费了224毫秒,快了4倍多,只是移动了一行代码。

6.减少DOM处理

通过减少插入DOM的次数,我们可以让刚才那个例子运行得更快。DOM插入操作像.append().prepend().after()和.wrap()都相对地更耗费资源,如果运行很多DOM插入处理会让网页变得很慢。

我们需要做的是使用字符串连接建立列表,然后使用函数把列表一次性添加到无需列表上,使用.html()会更快,看看下面的例子:

var myList = $('#myList');

for (i=0; i&amp;lt;1000; i++){
myList.append('This is list item ' + i);
}

在我的电脑里运行需要216毫秒,差不多1/5秒,但如果我们先建立一个字符串,再使用.html()插入,像这样:

var myList = $('.myList');
var myListItems = '';

for (i = 0; i &amp;lt; 1000; i++) {
myListItems += '&amp;lt;li&amp;gt;This is list item ' + i + '&amp;lt;/li&amp;gt;';
}

myList.html(myListItems);

用了185毫秒,虽然没有快多少,但还是节省了31毫秒。

7.插入DOM时包含所有内容在单个元素里

嗯,别问我为什么这样做(我一定会有更有经验的程序员可以解释)

上一个例子中我们通过.html()函数插入1000个元素到一个无序列表里。如果我们在插入前将它包含在一个UL标签里,然后将整个UL插入到另外一个标签(一个DIV)里,这样就只插入了一个标签,而不是1000个,这会让程序块很多,像这样:

var myList = $('.myList');
var myListItems = '&amp;lt;ul&amp;gt;';

for (i = 0; i &amp;lt; 1000; i++) {
myListItems += '&amp;lt;li&amp;gt;This is list item ' + i + '&amp;lt;/li&amp;gt;';
}

myListItems += '&amp;lt;/ul&amp;gt;';

myList.html(myListItems);

只花费了19毫秒的时间,巨大的改进,比第一个例子快了50倍。

8.尽可能使用ID而不是class

jquery优秀的选择器使通过Class选择元素变得跟通过ID选择元素一样简单,让人比以前更放心大胆地使用class。但事实上最好还是使用ID而不是class,因为使用ID获取元素时,jquery使用了浏览器默认的方法(getElementByID)获取元素,这无需经过遍历元素即可找到所需要的元素,比通过class查找元素更快。有多快?让我们来看看。

我使用了前面的例子,并对它进行小小的改动,让每一个li元素都有class属性,然后通过循环选择每一个元素。

// 创建list
var myList = $('.myList');
var myListItems = '&amp;lt;ul&amp;gt;';

for (i = 0; i &amp;lt; 1000; i++) {
myListItems += '&amp;lt;li class=&quot;listItem' + i + '&quot;&amp;gt;This is a list item&amp;lt;/li&amp;gt;';
}

myListItems += '&amp;lt;/ul&amp;gt;';
myList.html(myListItems);

// 每一个元素都选择一次

for (i = 0; i &amp;lt; 1000; i++) {
var selectedItem = $('.listItem' + i);
}

跟我想的差不多,我的浏览器卡住了,它使用了5066毫秒(超过5秒)。现在修改一下代码,给每一个元素一个ID代替class,然后做同样的事:

// 创建list
var myList = $('.myList');
var myListItems = '&amp;lt;ul&amp;gt;';

for (i = 0; i &amp;lt; 1000; i++) {
myListItems += '&amp;lt;li id=&quot;listItem' + i + '&quot;&amp;gt;This is a list item&amp;lt;/li&amp;gt;';
}

myListItems += '&amp;lt;/ul&amp;gt;';
myList.html(myListItems);

// 每一个元素都选择一次
for (i = 0; i &amp;lt; 1000; i++) {
var selectedItem = $('#listItem' + i);
}

这段代码只需要61毫秒的时间,差不多快了100倍!

9.给你的选择器定一个范围

默认地,当你像#(“.myDiv”)这样使用一个选择器,页面上所有的DOM元素将会被遍历,去查找符合条件的元素,这将会十分耗资源。

jquery的选择函数提供了第二个参数:

jQuery( expression, context )

通过提供一个上下文参数给选择器,可以让选择的范围缩小在所提供的元素内,不需要遍历整个页面。

为了演示,让我们引用上一个例子的代码,创建1000个元素的无序列表,每个li标签都有class属性,循环选择每一个元素,像上一个例子所看到的,将会花费超过5秒的时间运行这段代码。

var selectedItem = $('#listItem' + i);

然后我为选择器增加了一个上下文参数,让它只在.myList元素里遍历,像这样:

var selectedItem = $('#listItem' + i, $('.myList'));

它仍然使用了3818毫秒的时间,因为选择class还是一个效率低的做法。但这已经比之前快了25%,而且只为选择器添加了一个上下文参数而已。

译者注:我想如果把上面的代码放在一个大页面里执行,效果会很明显。

10.使用jquery链

jquery最酷的特性之一就是它能把函数调用连接在一起,例如,如果你想转换某个元素的class,可以这样写:

$('myDiv').removeClass('off').addClass('on');

如果你像我的话,会在学习jquery的前5分钟就知道这个特性,但jquery链不仅仅是这样。
首先,它可以跨行运行(因为jquery=JavaScript),这意味着你可以像这样简洁地写代码:

$('#mypanel')
.find('TABLE .firstCol')
.removeClass('.firstCol')
.css('background' : 'red')
.append('&amp;lt;span&amp;gt;This cell is now red&amp;lt;/span&amp;gt;');

养成使用jquery链的习惯可以减少选择器的使用。

假设你想在某一个元素上执行几个函数,但其中有一个函数通过某种途径改变了元素本身,像这样:

$('#myTable').find('.firstColumn').css('background','red');

上面的代码首先选择了一个table,然后选择table里class为”firstColumn”的单元格填充红色。

假设我们现在想把所有class为”lastColumn”的单元格都填上蓝色。因为我们之前已经用find()函数把所有class不是”firstColumn”的单元格排除了,所以我们要再次使用选择器获取table元素,所以我们就不能使用jquery链了,是不是?其实不是,jquery还有一个end()函数可以让链恢复到未被改变的时的状态,这样就可以继续链接下去,像这样:

$('#myTable')
.find('.firstColumn')
.css('background','red')
.end()
.find('.lastColumn')
.css('background','blue');

创建一个有链接功能的jquery函数比你想象中的还要简单,需要做的只是在函数里修改完元素后返回它:

$.fn.makeRed = function() {
return $(this).css('background', 'red');
}

$('#myTable').find('.firstColumn').makeRed().append('hello');

简单不?

继续阅读:改善你的jquery—25条jquery实用技巧<二>

关于翻译与jquery

2009-4-8 评论(0) 分类:生活 Tags:

昨天心血来潮,想试着翻译一篇技术文章,刚好近几天在用jquery做个小小的功能页面,又看到了Improve your jQuery – 25 excellent tips这篇很好的文章,似乎也没人翻译(可能有我没找到),就试着做了。

jquery实在是个很讨人喜欢的javascript框架,之前有下过dojo、YUI等框架玩玩,一开始就不喜欢了,那么大的框架,载入得需要多长时间啊,学起来又不容易,jquery小巧功能又强大,写法简洁,还有众多扩展,又容易上手,轻量级前台应用的首选啊~~用jquery感觉非常好。P.S jquery min版写着只有19K,但我下载的都是50K左右的,为啥?

这篇文章有25点,但我翻译到第10点时行数已经超过200行,虽然是包括了换行和代码的结果,但还是让人感叹,怎么这么长啊,外国佬真有耐心啊,排版都要排半天,25点要是放在一篇文章里,实在太长了,还是分开发布吧,我也没那耐心一口气就写那么多。

虽然那些英语很简单,但第一次翻译,过程还是有碰到困难的,有些句子不知怎么翻译,就蒙混过关,意思对就行了,还是挺多次不知道怎么翻译的,例如tips应该是小贴士,还是技巧,还是建议呢?第二点的cheat sheet我是搜索了一下才知道它是啥意思,但照网上说的翻译成“说明书”“步骤说明书”“小抄”又不合适,我照它原物的功能说成“参考表”了,不知正规应该怎么说。

翻译过程中偶尔也会加一点自己的意见~但不多~

At last, just for fun.

空间 圈子

2009-4-5 评论(2) 分类:生活 Tags:

从2日起这个博客就打不开了,收到email原来Host2ez正受到多IP、大流量的DDos攻击,就是分布式拒绝服务攻击,还以为不用多久就可以恢复,结果一直瘫痪着,4日发布消息,host2ez死了,让用户去办理相关退款手续,晕,这么倒霉,买个空间才用了10天就没了,后来在群上了解到,host2ez是个口碑很高的服务商,群上办理合租的“组长”告诉我,国外的,一般便宜、速度不错的主机,被其他IDC嫉妒,所以经常被攻击,所以就不稳定。一般贵的IDC,没市场竞争力,没人去攻击,所以稳定。国内的一般不会受攻击,因为大家都在中国这个和谐的地方,攻击了被抓到是要坐牢的。险恶啊,好的便宜的都会被打压,留下的都是不怎样又贵的。现在使用的韩国主机,也是速度快又便宜的,不知能支持多久?虽然这个买了一年,但并不看好……

为啥不买国内的空间呢?今年中国互联网刚出了个规定,每个网站都必须备案,否则杀无赦,诸多麻烦,备一个案要20个工作日,一个月的时间,觉得备案也不过就点开网站看几秒,再点一下鼠标的功夫,但公务员的效率就是这么高,没办法,不想折腾这个,国内空间价格也不菲,自己玩玩做做实践的空间,没必要花费那么多~~

虽说专注于互联网,但看起来我所了解到的互联网只是一小部分,十分局限,之前某一个时间想到,世界、人生就是一个个圈子,从这个圈子跳到那个圈子,圈子有大有小,有高雅有低俗,混来混去,也不过是在那圈子里打转,在高考的圈子打转,在社团的圈子打转,在工作在单位的圈子打转,就是这样,互联网上,也是有一个个圈子,黑客圈,电子商务圈,WEB2.0圈,技术圈,seo圈……应该还有很多,觉得我也就在web2.0圈子里观望观望,在瞄瞄技术圈,就没了,其他圈子所知甚少~~

另外最近发现如果没有外界环境驱动,我在电脑前就不会去学什么东西编程实践什么的都十分懒得去做,只会看看网页,聊聊天,或者玩玩小游戏,时间就过了~十分浪费,某个时期我挺怕浪费时间的,在外面没事做的时候,总想找本书看看才觉得不会浪费时间,在电脑前要看看博客写写程序才不会浪费时间,搞到自己挺累,最近就放松下来了,虽然还有事做,但生活还算悠闲~~

迁移

2009-3-26 评论(0) 分类:生活 Tags:

博客搬家了,https://blog.cnbang.net

使用闪吧博客3年多了,真是够长的,说实话我是一直想从闪吧里搬走的,因为太多限制了,而且博客冷门,不知道什么时候会给停了,但也因为太冷门了,几乎找不到任何博客搬家工具,要搬只能文章一篇篇的copy,所以一直以来只有念头没动手。

我本身是准备以后从事互联网行业的,最近又在学PHP,所以独立博客wordpress是最好的选择,我不想搬到其他博客提供商去,要搬只搬到独立博客,不仅仅是为了搬博客,也是为了折腾下wordpress,这也是学PHP的途径之一。另一个是,独立博客的自由是我一直所垂涎的,在上面想放啥就放啥,这放啥不是说内容,而是整个博客,像之前刚用饭否的时候,就对某些博客把饭否、twitter整合到博客里感到羡慕。

之前一直没有机会搬,因为要购买域名购买空间,最好还要熟悉一点php,最近条件都有了,刚好放秘饭的免费空间又出问题了,就索性弄了,也可以放秘饭。

说起为什么要在闪吧弄博客,是因为当时我在学FLASH,在闪吧论坛混,偶然看到闪吧的新东西-博客,就注册了一个试试,一试就几年过去了。当时Q空间处于起步阶段,没现在这么火,新浪博客出了没也不知道,网易百度什么的都还没出博客,不然说不定我会在其他地方混迹。

回看我在这里的第一篇日志,06年1月14日的,

很久没上闪吧,今天一上就见到新鲜东西。。闪吧改变了不少,随便申请了个BLOG试试。这个BLOG还真没得说,功能齐全,模版又不错,速度又快~~不过。。估计以我的性格。。是很少会在这里发表文章的了。。。拭目以待吧。。。

第一次用的时候,是没有想到我会一直在这里发表日志持续3年多的时间的。闪吧博客刚开始的时候是相对比较自由的,只有博客的功能,模板自定义,可以定义得很简洁,当时我用的模板就是很简洁的,挺喜欢,但后来升级了,变成了X-SPACE,多出了许多无用的功能,变得臃肿,页面也是繁杂,十分不喜欢,但还是继续用下去了。

忘记从啥时候开始,闪吧社区首页http://space.flash8.net的推荐空间栏里,有我的一席之地,大概是认真在闪吧博客上写日志的人少吧。因为这个有段时间带来了挺多流量,每天都有挺多人光顾的,说实话,虽然说写是为了记录自己的生活和想法,别人看不看无所谓,但有人看还是比没人看好。又不知道从什么时候开始,人流少了很多,大概闪吧也衰退了吧,一两年来都没怎么更新,博客这块大概更是放任不管了。

x-space和闪吧博客的冷门让搬家无法借助任何工具,只能人工复制粘贴,200多篇文章,还是大工程来着,迁移的过程中,偶尔有扫视了以前写的日志,感觉现在写的跟以前是有所不同,但具体说不出来,呵~~一些习惯也变了,像第一篇日志,那么多个句号,忘记当时用它表现什么情绪了,反正跟现在是大不一样~~现在感觉它是很特殊的符号,挺什么的~~以前我也会发很短的文章上来,现在发的都是长篇大论了,因为短的都直接发到饭否了~~

挺想写一个技术类博客的,但似乎水平还没到家,胸无点墨写不了,有时间再试试~

最后,截张图,缅怀一下用了这么久的博客:

flash8blog

P.S 好像这么久以来我一直是用这个主题。

碎碎念

2009-3-24 评论(1) 分类:随记 Tags:

开学已经一个月了,大学生活一直过得很快,好像每天坐在电脑前都挺忙的,每晚回到宿舍一上Q,群啊好友啊打开一大堆铺满状态栏。这学期一开始就挺顺利的, 寒假来学校前一天心血来潮,在兼职网上发了两封自我介绍的信,就找到了个兼职,做到现在,感觉还挺不错,也没有感到多大束缚和痛苦,主要是还能学到东西。 其实这个学期能接的项目突然变得很多,说实话,我这个没怎么赚过钱的人,看到对我来说有点丰厚的报酬,还是有诱惑力的,但最终只做了那个兼职。

对 家里说我做这个的时候,妈妈一直重复看重的是我可以从中学到东西,而不是报酬,感觉很好,说实话报酬和学到东西我一样看重。或许最重要的不是钱本身,就如 老妈说说,听到我做这个,高兴的不是我能赚多少钱,而是我有这能力,在大学能学到东西。我看重的是最亲近的人对自己的肯定。这也是我自信心之所在。

有 时看到一些人在学生会,在社团,在舞台上如鱼得水的自在,学尽圆滑处世交际,而我大学到现在,似乎在这些方面没什么长进,还是那样,会有点不安定,编程毕 竟只是一个技能,很细微的技能,在社会上生存,还是得靠人际关系,或许可以天真地想,IT圈不需要这么多人际关系与圆滑处世,但我觉得,做技术的,只有顶 尖人才才能不考虑这些,一般的人,还是需要的。深知大学四年,如果只学到电脑相关的东西,那是相当失败的,互联网,IT在人生来说只是一个小小的圈子,如 果在大学这么自由的时光还一直在这个圈子里打转,就麻烦了。寒假回家时老哥也有对我说,学校有什么演讲比赛尽量去参加,口才重要啊。我知道口才重要,但还 是没去练,是不喜欢吧。漂浮着,不知身在何处。

说到学生会,半年多来我一直是个旁观者,旁观着学生会,大学一开始就把这种“一群人聚在一 起做一些事情”的小小组织神圣化了,甚至还有点名利官僚的味道,同是学生,年龄最多差那么两三岁,至于吗,有些人就学会了装,就会装,装领导最在行,现在 这年龄,离真正能当领导还有十几年呢,真的成熟老成还好,心无点墨还装三四十岁领导的口气说话,那是比较恶心的。感觉一些人大三开始就对学生工作没什么兴 趣了,都懒得做事管事了,但还是占着一个头衔,为啥呢,为了“哇,他是副主席耶,好厉害啊”,“哇,他是部长耶,好厉害啊”,还是为了评优加分,还是说得 好听点,对社团学生会有感情?或许,更普遍的是,大二激情澎湃想往高处爬,爬到了后发现风景不咋地,就打呼睡觉了。

在一个社团里,大家几乎都是同个年龄的人,想法是挺容易捕捉的,我在大一的时候并没有想过师兄师姐们会怎么想,谁会是接班人,喜欢什么样的人,对师弟师妹期望是什么,现在是全明白了,不知是因为自己当了社团里的师兄师姐亲身感受到才明白,还是怎么的。

高中只是名的竞争,为成绩排名拼命,到大学加了利,一个个小小的名利场,就是那些团委学生会。

最近没看什么文章,博客文章都很少看了,都在学程序了,所以写出来的日志,不仅乱,还花了很多时间,呃……好像我想的也是挺碎的,构不成文。

P.S 最近申请了国际域名 webbang.net 开始搭建wordpress搬移博客。其实很早就想申请域名自己搭建wordpress了,一直没实施,知道搬移后会更少人看我的博客,但无所谓~~

四六级

2009-2-25 评论(1) 分类:随记 Tags:

我想写什么来着,很多时候没坐在电脑前时会胡思乱想,有时会想到挺多,想记下来,但一坐到电脑前,就忘记之前想的是什么了。

昨天六级成绩出来,没过,好像所有的考试中查分数之前的那种感觉有种期盼有种紧张在里面,或许跟赌博是一样的感觉。这次赌输了,但没有多在意,本来就没有很想过六级,就之前准备的情况看,也没有多大希望过。过了也会再去考。

四 六级考试是一条很赚钱的产业链,全国大学生近3000万,90%的人交钱参加四六级考试,50%以上的人买四六级参考资料,2%以上的人买试题答案,昨天 两三千万人挤进一网站查成绩,网站页面上广告带来的利润也不少,会有30%的人手机查成绩,成本极低的收费1元/条,又一暴利。接下来这个产业链还在继 续。考试不分过不过只提供成绩单,迫使过了六级但分数稍低的人会继续去考,又增加了人数进入这条产业链。顺便说下查成绩的网站是恶心了点,本来打开就慢, 开完还要安装安全插件,还只能用IE,输入后还要倒计时30秒才显示成绩,相当恶心。

好像我写日志,经常会回来修改,因为有时候一想,写下来的东西十分模糊,想的跟写的差很多,这次写日志的状态实在差,删了一大段。

在途中

2009-2-4 评论(0) 分类:生活 Tags:

早上7点15醒,比闹钟早了10分钟,昨晚睡觉分两个过程,一个是感觉没睡着的状态,一个是做梦梦到像真的一样,很奇怪,起初觉得自己没睡着,但 睁开眼睛后发现爸妈给我加了张被子放下了蚊帐,而这些我都不知道,也就是说睡着了,可能大脑分几个部分,熟睡就是每一个部分都休息了,其他很多睡不好的, 感觉睡不着但其实睡着了的状态就是大脑某些部分睡着某些部分没休息~

从家里出来,街上竟然空空如也没人摆摊卖豆浆和粥了,不知是彻底不 卖了还是过年休息,顺路来到花城买了包子填肚,来到车站,曰:买去流沙的车票,售票小姐一查,发现没去流沙的车。你昨天又跟我说今天再来买有六点多八点多 九点多的车?真扯淡,但没办法确实没车。跑到城北客运站问有没有去普宁的车,此售票小姐态度不咋地,说这里从来没去普宁的车。但你们那里挂着的出车表不是 写着普宁吗一天还十多趟,结果竟然没有。不过确实没有也没办法~在车站碰到很久不见的初中同学泽浩,侃了一下,互换了电话~~挺巧的~~

正规军没法用了咋办呢,车站外面停了一的士,走上去问,知道哪里有去普宁的车吗,被告知在某个地方貌似叫“桥墩”,去那里拦路过的车,一定拦得到的,顺便问了下打的去棉湖要几两银子,被告知三百两,哇,后来才知道此乃狮子大开口,吓人用的,一半的银两就差不多够了。

叫了辆三轮车,要去刚才他说的地方,无奈说了“桥墩”二字三轮车不知道啥意思,东海住了这么久我还不知道那地方叫啥,惨,好在三轮车先生也是职业人事, 说去搭普宁的车,就知道要去哪里了,把我送到那里,还跟我说拦海丰高速下来的车比较快,其他的要半路揽客挺慢,嗯,挺好人,但我犯了个错误,就是上车前没 有问价钱,失误来着,这很重要,到了那里三轮车先生又是狮子大开口10快钱,哇,物价咋上涨得这么快,就这么点距离,油费或电费也就几毛钱,使唔使啊~但 到了再说价钱就没法怎么说了,最后给了8块。

等了十几分钟就看到了汕尾去普宁的车,运气不错,那车虽然一路揽客但也挺快的,问去棉湖是 不是在流沙转车就行了,被告知流沙没有去棉湖的车了,让我在池尾下车再转车去某个镇再转车去棉湖,汗,管他呢到池尾再说。到了池尾他又不说要转去哪个镇了 让我去问问去揭阳的车,呃~下车后一的士司机问我去哪,本来没想打的,后来想反正也不知道客车转来转去要怎么转,问了那些司机也没答案,打的干脆点,不过 应该被小坑了~

司机蛮喜欢侃谈的,在车上聊了下,湖北人,说了下载客经验,去过陆丰海丰广州XXX等地方什么的,还说道一网友要从普宁跑去珠海会网友要坐他的车,1000多块,结果在车上打电话网友手机关了,没去成,引用小木舟的一句话:这个世界太疯狂~

几经艰辛,终于来到目的地~嘿~~

回去的时候,想坐车到池尾再拦车回去的,无奈棉湖没有直达池尾的车,要先去洪阳再转到池尾,本来还期盼有直达的,但后来在一摩托大叔的说辞下放弃了,他 说洪阳也有直达陆丰的,就那些长途高速车。坐摩托车过去洪阳,那摩托大叔还挺热心,一路上说个不听但风太大有的听不清楚,还问我是不是湖南的是不是去陆丰 打工,哈~~来到洪阳,那里确实有很多车,他帮我问了有没有去陆丰的车,结果是:100块,因为是坐长途的车,所以要这么贵,这当然不干,于是在那里坐车 去池尾.

结果我挑了辆天使般的外表乌龟般的速度的大巴,真的是很慢,也就骑自行车那速度,拖啊拖啊,终于拖到了池尾,在那个三路交叉的 地方,可惜的是,我起先认错了方向,错过了一两分钟,等我看清方向的时候,一辆不知道是去海丰还是陆丰的车就那样开过了,嗯,那个地方也是拦车专用地,很 多车牌放那里很多人在那里等车。

等了近半小时又一摩托大叔问我去哪,我说陆丰,原来他帮一面包车拉客,面包车是去惠州的,会路过陆丰, 也可以坐,我看价钱也还合理,面包车可能还会比客车快点,再等下去也不知道什么时候有,就坐上去了。但没想到坐上去也等了半个多小时才开,原因是他们还要 再拉客,那面包车的两个人就面容来看去演反面角色或者黑社会角色都挺合适的,拉了许久还没客,拖了很长时间,好像有人托他们送货,四箱货搬上,听起来是要 送到惠州的,钱也给了,但开车后几分钟到一个比较偏僻的地方就把那些货物搬下车了。难道那些货物就这样据为己有?不管,此后车开得还挺快,一镇一镇地过 去,葵潭,内湖,博美,接着就到了陆丰,在车站那里下车,走路回家,圆满~

说起来,今天坐的车的类型还真是多样,三轮车,小客车,的 士,摩托车,大巴,面包车,貌似是第一次坐在路边拦的车,在池尾的时候还是摩托大叔帮他们揽的客,互帮互惠,配合地图大概了解了下路~也就一条路一直走下 去,贯穿普宁陆丰海丰惠州~而那条路经过陆丰的车站,也就是我家附近,挺方便。

好,流水账记录完毕。总结:坎坷,也顺利~

对韩寒郭敬明的看法

2009-1-26 评论(6) 分类:随记 Tags:

最近看了韩寒的《一座城池》,觉得这是部极为随意的小说,想写什么就写什么,无逻辑无故事,就是玩弄文字与夸张地放大社会黑暗,或许不能叫小说,叫 杂录更好吧?不知道如果没有韩寒这个名字镇压着,这样的小说出版社敢出不,他名字已经成为品牌,跟耐克阿迪一样,郭敬明也是。据说这本书刚出版时,宣传语 上写的是“韩寒至今写得最好的小说”,而他最近刚出的《他的国》,在博客上也是说,个人认为写得最好的小说,确实这样的宣传语比较能吸引人,读者都想看看 这新的小说究竟怎么比《三重门》好,但说多了似乎也就不新鲜了,估计韩寒真的是觉得自己一部比一部写得好,用词也十分准确:“个人”,即使外界不认可,他 也能说这是我个人认为而已关你们X事。又能宣传又能保全自己。

其实我是挺欣赏韩寒的,语言的风格,特立独行的性格,真正做到他那样不羁 与洒脱的人很少,或许只有天才才能坚持这样的个性,否则这样的性格这样的个性只能在社会现实面前低头,当然要能有陶渊明那样境界不为五斗米折腰也行,但往 往自己折不折腰不是自己说了算,生活周围还有很多人,重要的人,影响着。说回来,不喜欢他对某些人事语言的尖锐,有时会有为自己炒作的嫌疑,不过他的博客 还是新浪博客里最值得看的。

说郭敬明,忘记从什么时候开始对他不抱好感,接着是厌恶,应该是涉嫌抄袭打官司输了后只赔钱不道歉的行为开 始吧,其实之前对这个人也是不咸不淡没怎么关注,高二还是高三时看了他的《梦里花落知多少》,差点被赚到眼泪,《幻城》只看了短篇感觉也很好。但这些作家 都是只靠一两部作品出名打出自己的品牌,之后就靠着炒作那个品牌赚钱。就这方面来说郭敬明做到了极致。

某天看到郭敬明访谈,应该是鲁豫有约里的吧,他那样的访谈让人想不清楚为什么他这样的人都能成功,对访谈感想如下:

1.有个疑问:郭敬明是否同性恋?声音造型说话什么的弄得那么娘。

2.时不时透露着孩子气,炫耀那些不怎样的东西展示自己的天才,比如一天写X万字,大学天天睡觉逃课,不到最后不写稿什么的。

3.说上海大学是个非常变态的大学,首先在访谈中这样说自己的母校,不太靠谱,其次他所描述的“变态”,自己着实是把这些“变态”发挥到极致,真是变态 大学中最变态的人。外界对大学环境的描述大学如何堕落大学生如何虚荣攀比什么的,我在华师没怎么感受到,但看来确实其他学校就是那样,或者我们学校的某一 部分人也会那样,但构不成我们大学的主要人群。或许大学分三九流几个等级,好的大学学习氛围、学生的品质还是很好的。不知是本质还是氛围的原因,我无法感 受到郭敬明说的看到别人一星期换一次手机开宝马奔驰衣服天天不一样会心理不平衡,我听完他说的,觉得,在华师读书多么美好啊~华师这所中庸的大学,太适合 我了。同时,上海大学也太适合郭敬明了。

4.郭敬明人格是有问题的,他工作室里的人,估计人人会讨厌他,他说能把团队里的人骂哭,还男 的女的都被骂哭过。正如鲁豫所说是他们太脆弱还是你特别会骂人啊?跟着这样的狗屎老板都能忍气吞声,那些人承受能力也挺厉害的,不知是外面工作难找还是郭 开的薪水高还是有着崇高理想和信仰支撑让他们不离开,他在那样说我都受不了他了,佩服一下他们。

5.对于郭的人格问题还不只是这骂人一说,先前的抄袭赔钱不道歉摆出一副钱我有的是要就拿去道歉就没门的阔样,一些令人作呕的言论如“看四爷搞垮天娱”,还有访谈中对女朋友一说,还有一些我还没了解到的,都展现了他变态的精髓。

6.细说郭敬明关于女朋友的言论。“短信三分钟内不回就火大,打电话过去没人接火大,自己收到短信会放在一边有空再回,想你的时候要立即出现不想的时候 不要来烦我。”,笑死人,鲁豫都听傻了,这哪叫找女朋友,包二奶还差不多。哪个女的要真接受郭敬明这样的要求当他女朋友,那女的不是脑袋有问题就是想当郭 敬明钱包的女朋友。后一类型的还是省点吧,郭这么精明在他那是得不到钱的好处的了。综合郭敬明那么娘的造型和声音,还有其庸俗程度,还有对女朋友的独到见 解,要是真有很多女的想当郭敬明女友,那我只能像鲁迅那样老气横秋地说,救救孩子……

7.访谈过程中感觉鲁豫很想扁他。

8.就郭这样的人都能这么成功,赚到那么多钱,呃,只能说他能干了,摒弃人格什么的不说,他确实很有能力,写作的能力是其次的,就如韩寒说他在用最少的 字赚最多的钱这方面的研究实在高超。其实他写的文字,如果不注明郭敬明三个字,或许连他的粉丝们都会认为那不过是三四流的青春文字,但贴上“郭敬明”这个 标签就不一样了,好比一件造价十几二十块的衣服,贴上耐克标签,就可以卖七八百了。郭敬明做的《最小说》我一次没翻过,但就看着那本东西就有让人想买的冲 动,外形迎合年轻人口味,卖前密封不得翻阅,觉得如果没有密封,他这本杂志(是杂志吧?)的销量会减小一半。他的成功是否说明事业中商业中人格和为人处世 之道不重要重要的是能力?觉得全民素质提高的时候,就是他落魄的时候。

另外那些整天在韩航郭敬明博客里抢沙发的人,那些fans们真是 让人十分讨厌。不知郭和韩本人会不会讨厌。博客里所谓的“评论”早已经不是评论,在前面的全是“沙发”“顶”之类的垃圾评论,或许我没追过星不能理解追星 的心理,抢先在第一页评论真那么有意思吗?建议博客最新的评论显示在最前第一页,这样的现象自然会减少,但该会失去超多流量,新浪打死都不会这么做。 fans们的素质应该说大部分也是不怎样,如果我写的这篇让郭敬明的fans看到,评论里应该是充满脏字而不是反驳的文字。

最后,向韩寒道个歉,把你跟郭敬明放在一起写,委屈你了~