click与dblclick事件冲突解决方法

一个DOM元素,如:div,既绑定了 click 事件,又绑定了 dblclick 事件,这两个事件分别要做独立的事情。事件处理上没有冲突,都可以各自完成各自的操作。双击的时候虽然是执行了 dblclick 事件,但是在这之前,也执行了 click 事件,那么,如何来禁止或者说屏蔽这次多余的 click 事件呢?本文将提供给您一个比较好的解决办法。
情况分析:
  首先,来了解一下点击事件发生的先后顺序:
单击:mousedown, mouseup, click
双击:mousedown, mouseup, click, mousedown, mouseup, click, dblclick
  由此看来,dblclick 事件发生之前,实际上发生了两次 click 事件。其中,第一次的 click 是会被屏蔽掉,但是第二次则不会,所以就出现在双击的时候,也触发 click 事件。 继续阅读click与dblclick事件冲突解决方法

JS面向对象编程之对象访问控制实例

function Cat(name, age){
    var name = name;
    this.age = age||1;
    this.setName = function(sName){
        this.name = sName;
    }
    this.getName = function(){
        return this.name;
    }
    this.setAge = function(nAge){
        this.age = nAge;
    }
    this.getAge = function(){
        return this.age;
    }
}

Cat.prototype.say = function(){
    console.log('I am '+this.name+', I am '+this.age);
}

var kk = new Cat('kk');
console.log(kk.name);//undefined @private
kk.setName('deeka');
console.log(kk.getName()); // deeka
kk.setAge(2);
console.log(kk.getAge()); // 2
kk.age = 3;
console.log(kk.age);//3 @public
kk.say(); // I am deeka, I am 3

微博开发之@替换

在微博开发中,对于@的替换,很多人道德想到的是正则吧,正则除了效率问题,还有误替换,举个例子:

@ponyma可能被解析成了"@pony"+"ma"

不多说,直接上代码:

$users['pony']      = '马化腾';
$users['ponyma']    = '坡泥马';
$users['ponyli']    = '坡泥李';
$text = "@pony:特别声明,@ponyli@ponyma@ponywong@ponylao什么的都不是我";
preg_match_all('/@\w+/', $text, $matches);
if(is_array($matches[0]) && !empty($matches[0])){
    $replaces       = array_combine($matches[0], $matches[0]);
}
foreach($users as $userid=>$username){
    $replaces['@'.$userid]  = "<a href='http://t.qq.com/{$userid}'>{$username}</a>";
}
$html               = strtr($text, $replaces);
echo $html;

结果:

<a href=’http://t.qq.com/pony’>马化腾</a>:特别声明,<a href=’http://t.qq.com/ponyli’>坡泥李</a><a href=’http://t.qq.com/ponyma’>坡泥马</a>@ponywong@ponylao什么的都不是我