`
my14686
  • 浏览: 9590 次
文章分类
社区版块
存档分类
最新评论

jQuery-bind不能处理绑定hover事件

阅读更多
看这个例子: $(document).ready(function(){ $('.some-class').bind({ hover: function(e) { // Hover event handler alert("hover"); }, click: function(e) { // Click event handler alert("click"); }, blur: function(e) { // Blur event handler } }); }); 奇怪的事情发生了,这里的 “hover” 事件完全没有反应。 而...
看这个例子:
$(document).ready(function(){
$('.some-class').bind({
hover: function(e) {
// Hover event handler
alert("hover");
},
click: function(e) {
// Click event handler
alert("click");
},
blur: function(e) {
// Blur event handler
}
});
});
奇怪的事情发生了,这里的 “hover” 事件完全没有反应。 而像 “click” 和 “blur” 这两个都能正常调用。
同时,如下的代码也是正常运行的:
$(".some-class").hover(function(){
// stuff
})
为什么 bind 不能绑定 hover 呢?
答案是:
应该使用 mouseenter 和 mouseleave 这两个事件来代替 (这也是 .hover() 函数中使用的事件) 所以完全可以直接像这样来引用:
$(document).ready(function(){
$('.some-class').bind({
mouseenter: function(e) {
// Hover event handler
alert("hover");
},
mouseleave: function(e) {
// Hover event handler
alert("hover");
},
click: function(e) {
// Click event handler
alert("click");
},
blur: function(e) {
// Blur event handler
}
});
});
因为 .hover() 是 jQuery 自己定义的事件… 是为了方便用户绑定调用 mouseenter 和 mouseleave 事件而已,它并非一个真正的事件,所以当然不能当做 .bind() 中的事件参数来调用。
http://www.jdfwkey.com/
分享到:
评论
1 楼 taballa 2012-10-20  

jQuery 事件绑定方法(bind hover toggle live.... )、删除事件方法(unbind, die)及 事件对象

事件绑定方法:

1.<type>(function)

$("button").click(function(){
    ...
});

2.bind(map)
复制代码

$("input[type='text']").bind({
    focus: function(){
        ...
    },
    blur: function(){
        ...
    }
})

复制代码

3.bind(type, [data,] function)

  注:如果没有第二个参数,则与第一个绑定事件方法相同
复制代码

$("button").bind(
    "click",
    {
         arg1: "2012"
         arg2: "07"
    },
    function(event){
        ...
        event.data.arg1
        ...
    }
)

复制代码

4.one(type, [data,] function)

  绑定事件只执行一次,执行完之后绑定失效

5.hover(over, out)

  注:两个参数为鼠标盘旋在对象上方和离开时调用的函数
复制代码

$("div").hover(
    function(){
        ...
    },
    function(){
        ...
    }
)

复制代码

6.toogle(function1, function2, ...)

  该方法作用是单击对象时循环调用函数列表中的函数

7.live(type, function)

  该方法为整个页面生命周期内的某一类对象绑定一个事件处理程序



事件删除方法:

1.unbind([type] [,data])

  该方法删除匹配对象的事件处理程序,与bind方法对应,可以删除所有以bind方式绑定的自定义事件处理程序。如果所有参数都省略,将删除匹配对象的所有事件及事件处理程序;如果只有第一个type参数,将删除指定事件类型的时间处理程序。如:

$("#btn").unbind("click");

  如果同时指定两个参数,将删除指定事件类型的指定事件处理程序。如,btn绑定以下函数:

  var btnClick = function(){...};

  则删除btn的该事件处理程序的代码为:

$("#btn").unbind("click", btnClick);

2.die([tyoe] [,function])
  该方法与live方法对应,用于解除live注册的自定义事件。参数与unbind方法类似。



模拟操作:

  模拟操作就是模拟用户触发相应的事件,如一个事件触发另一个事件。

1.<type>()

  如触发一个按钮的单击事件:

$("button").click();

2.trigger(type [,data])

  如触发一个按钮的单击事件:

$("button").trigger("click");

3.triggerHandler(type [,data])

  与 trigger 方法不同:

  该方法只触发对象集合中的第一个元素的事件处理程序。且返回的是事件处理程序的返回值,而不是可链接的jQuery对象。该方法不会触发事件冒泡



jQuery事件对象:

1.事件对象的属性

  type:获得该对象的事件类型,如click, focus, mouseover等

  target:获得事件触发者(DOM对象)

  data:获得调用事件时传入的额外参数集合

  relatedTarget:获得触发鼠标事件的DOM元素

  currentTarget:获得当前DOM元素(等同于this关键字)

  pageX/pageY:获得鼠标事件中,鼠标光标相对于页面左上角的位置

  result:获得上一个事件处理函数返回的值

  timeStamp:获得事件发生的时间戳

2.事件对象的方法

函数名
说明 例子
preventDefault() 取消元素事件的默认动作
例如:
对于超级链接a来说,有href属性,那么在点击a的时候就会导航至href所指向位置.我们在a的click事件中,调用本方法,就不会导航到指定位置

//取消事件默认动作
$("a").bind("click", function (e) {
    e.preventDefault();
});

isDefaultPrevented() 是否调用过preventDefault()方法

e.isDefaultPrevented()

stopPropagation() 取消事件冒泡

e.stopPropgation();

isPropagationStopped() 是否调用过stopPropagation()方法

e.isPropagationStopped()

stopImmediatePropagation() 取消执行该元素该事件处理函数的后续事件处理函数,
并取消事件冒泡

$("a").bind("click", function (e) {
    e.stopImmediatePropagation();
});

//不会被执行到
$("a").click(function () {
    alert("我被点击了");
});

isImmediatePropagationStopped() 是否调用过stopImmediatePropagation()方法

$("a").bind("click", function (e) {
    e.stopImmediatePropagation();
    alert(e.isImmediatePropagationStopped());
});

例如:要在鼠标移动时获取鼠标的位置:

$(document).mouseover(function(event){
    var msg = event.pageX + " " + event.pageY;
    alert(msg);
});

相关推荐

    jquery-1.9.1.js 、jquery-1.9.1.min.js 【官方jquery包 js】

    事件处理是jQuery的另一大亮点,`.click()`、`.hover()`等方法使得绑定和解绑事件变得轻而易举。动画效果是jQuery吸引人的地方,`.fadeIn()`, `.slideUp()`, `.animate()`等方法让动态效果变得简单易行。最后,...

    jquery中取消和绑定hover事件的实现代码

    通常情况下,我们可以通过`bind`方法来绑定事件处理函数,但直接使用`bind`方法绑定`hover`事件并不能达到预期的效果。这是因为`hover`事件并不是一个原生的事件类型。jQuery通过`.hover()`方法提供了一种简便的方式...

    jQuery-1.4.3.js和jQuery-API

    - **事件API**:`.on()`, `.off()`, `.trigger()`, `.bind()`, `.unbind()`, `.hover()`等用于事件绑定和触发。 - **DOM操作API**:`.append()`, `.prepend()`, `.after()`, `.before()`, `.remove()`, `.empty()`...

    JQuery中使用on方法绑定hover事件实例

    总结来说,当需要在一些特殊环境或特定情况下处理事件时,使用`on`方法绑定hover事件不仅可以提高代码的灵活性,还能让事件处理更加清晰和可控。通过阅读本文,你应能够理解和掌握如何使用jQuery中的`on`方法来模拟...

    jquery-1.8.2.min.zip

    2. **事件处理**:jQuery提供了丰富的事件处理函数,如`.click()`, `.hover()`, `.submit()`等,使得绑定和解绑事件变得异常简单。1.8.2对事件处理机制进行了调整,增强了事件的兼容性和处理效率。 3. **Ajax交互**...

    jquery-1.7

    - **事件处理**:`$(selector).click()`, `$(selector).hover()`等方法使得事件绑定和处理变得直观易懂。 - **动画**:`fadeIn()`, `slideUp()`, `slideDown()`等动画方法使得页面效果更具吸引力。 - **Ajax**:`$...

    jquery-1.2.6-vsdoc-cn;jQuery 工具包

    4. **事件处理(Events)**:通过`.bind()`, `.click()`, `.hover()`等方法,可以方便地绑定和触发事件。 5. **效果(Effects)**:jQuery提供了各种动画效果,如淡入淡出、滑动、改变大小等,如`.fadeIn()`, `....

    Jquery-Cheat-Sheet-1.2

    - **`.bind()`, `.blur()`, `.change()`, `.click()`, `.dblclick()`, `.error()`, `.focus()`, `.hover()`, `.keydown()`, `.keypress()`**:允许为DOM元素绑定多种类型的事件监听器,增强了网页的交互性和响应性。...

    jquery的时间绑定事件与合成事件小例

    `bind()`是jQuery中用于绑定事件处理函数到指定元素的方法。它允许我们为一个或多个事件类型添加事件处理器。基本语法如下: ```javascript $(selector).bind(eventType, function(event) { // 事件处理函数 }); `...

    jQuery2.1.3.rar

    - **事件处理(Events)**:绑定和触发事件,如`click()`、`hover()`、`bind()`等。 - **动画(Animations)**:创建平滑的CSS属性变化,如`slideUp()`、`fadeIn()`、`animate()`等。 - **AJAX(Ajax)**:简化异步...

    使用jquery给新生的th绑定hover事件的实例

    用hover()也就没效果了(因为要重新给th绑定mouseover和mouseout事件,而且考虑到可能会有多次加载th等情况,bind也要多次绑定,比较麻烦),在这里我使用了live来解决给新生的th绑定hover事件: 代码如下: $...

    RIA应用开发:5-jQuery事件处理.ppt

    - `bind()`用于绑定事件处理函数,接受事件类型、数据和回调函数作为参数。例如,`$("#div1").bind("click", function() { alert("click div!"); })`会在`div1`被点击时弹出提示。 - `unbind()`则用于解除事件绑定...

    jquery-1.8.2

    `.click()`用于绑定点击事件,`.hover()`用于同时绑定鼠标进入和离开事件,`.bind()`和`.unbind()`则可以绑定和解绑任何类型的事件。此外,`.on()`和`.off()`是jQuery 1.7引入的事件处理新方法,它们更为灵活,支持...

    jquery手册-jQuery1.3

    1. 绑定事件:`.bind()`, `.click()`, `.hover()`等方法用于绑定事件处理函数,而`.unbind()`用于解除绑定。 2. 事件代理:使用`.delegate()`或`.on()`(jQuery1.7及以上版本)可以实现事件代理,提高性能并处理...

    jquery 1.7 js文件和手册.chm

    例如,`.on()`方法的引入,它是对`.bind()`, `.live()`, `.delegate()`等多个事件绑定函数的统一,使得事件处理更加灵活和高效。`.on()`方法可以实现元素的动态绑定,即使在元素动态添加到DOM后,依然能够捕获其触发...

    jQuery用unbind方法去掉hover事件及其他方法介绍

    jQuery是一个快速、小巧的JavaScript库,它使得HTML文档遍历和操作、事件处理、动画和Ajax变得非常简单。在处理事件时,jQuery提供了多种方法来绑定和解绑事件处理器。其中,.unbind()方法是用来移除之前使用.bind()...

    jquery-1.4.1

    1.4.1版本中,`bind()`, `unbind()`, `live()`, `die()`等方法帮助开发者绑定和解绑事件,而`.click()`, `.hover()`, `.change()`等简化的事件处理函数使得事件绑定更为方便。 4. **动画效果**: jQuery的动画效果...

    JQuery_API 1.4.3通用版

    3. **事件处理**:jQuery简化了事件绑定,如`click(function(){...})`用于响应点击事件,`hover(function(){...}, function(){...})`用于处理鼠标悬停的进入和离开事件。 4. **动画效果**:jQuery的`animate()`函数...

    jquery1.3api参考手册

    4. **事件处理**:jQuery的事件处理方式简洁高效,`.on()`方法可以绑定多种类型的事件,如点击事件`"click"`、鼠标悬停事件`"hover"`等。`.trigger()`可以触发已绑定的事件。此外,还可以使用`.bind()`、`.unbind()`...

Global site tag (gtag.js) - Google Analytics