2012-03-14 67 views
0

我有我的这些形式的按钮,我想结合“的mouseenter”和“鼠标离开”事件,他们这是我写Jquery-。每()不工作

$("button").each(function() { 
    $(this).bind("mouseenter", function() { $(this).css("border", "1px gray outset") }); 
    $(this).bind("mouseleave", function() { $(this).css("border", "none") }); 
}); 

这个代码代码只能在第一个按钮上工作,其余的事情都不会发生。 这是我的全码:

$("button").each(function() { 
$(this).hover(function() { $(this).css("border", "1px gray outset") }, function() { $(this).css("border", "none") }); 
    $(this).bind("mousedown",$(this).css("border", "inset")); 
    $(this).click(DoSubmit($(this), 'CLICK', '')); 
    }); 
+1

没有什么错,你发布的代码(http://jsfiddle.net/xJ6Ff/)。尝试在http://jsfiddle.net上设置演示,以显示您遇到的问题。 – Matt 2012-03-14 10:29:55

+0

[Works for me。](http://jsbin.com/uxiziq)(在Firefox上)。 – kennytm 2012-03-14 10:30:44

+0

这个脚本是否包含在第一个按钮之后,但在其他按钮之前?或者你在执行这个函数后用Ajax加载其他按钮?这个代码本身没有任何问题。 – 2012-03-14 10:34:41

回答

2

直接写:

$("button").mouseenter(function(){ $(this).css("border", "1px gray outset");}).mouseleave(function(){ $(this).css("border", "none");}); 

JS小提琴演示:http://jsfiddle.net/tkSdW/

+0

这相当于他使用的代码......它不会*修复*任何东西。 – Matt 2012-03-14 10:31:18

+0

@RoryMcCrossan:道歉,如果我失去了一些东西,但[没有问题](http://jsfiddle.net/xJ6Ff) – Matt 2012-03-14 10:35:28

+1

@Rory:代码*是*等效。 OP的原始代码起作用(如Matt所示)。所以如果它不适用于OP,这也不应该。这并不意味着它不应该这样写(它应该),但它不会解决OP的问题(*如果有问题*)。国际海事组织,我们必须等到(S)他澄清... – 2012-03-14 10:36:43

1

没有必要在each()循环分配事件处理程序。单单选择将返回元素的数组,然后jQuery将事件应用到这些元素:

$(function() { 
    $("button").bind("mouseenter", function() { $(this).css("border", "1px gray outset") }); 
    $("button").bind("mouseleave", function() { $(this).css("border", "none") }); 
}); 

Example fiddle

2

没有错,你的代码

提供它后运行DOM已加载,这意味着内部

$(function(){ 
    $('button')... 
}); 

此外,您不必每次使用,如果你只使用迭代事件绑定到当前元素..

您可以

$("button") 
    .bind("mouseenter", function() { $(this).css("border", "1px gray outset") }) 
    .bind("mouseleave", function() { $(this).css("border", "none") }); 
1

虽然直接绑定到整个集团的原代码is working just fine,因为它是,我会建议使用.hover()方法这是做同样的事情,但用更少的代码:

$("button").hover(function() { 
    $(this).css("border", "1px gray outset"); 
}, function() { 
    $(this).css("border", "none"); 
}); 

Live test case

1

你可能想这

$("button").each(function(index,value) { 
    $(value).bind("mouseenter", function() { $(value).css("border", "1px gray outset"); }); 
    $(value).bind("mouseleave", function() { $(value).css("border", "none"); }); 
});