Jquery- .each()不起作用

时间:2012-03-14 10:27:30

标签: jquery

我的表单中有这些按钮,我想将'mouseenter'和'mouseleave'事件绑定到它们这是我写的代码

$("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', ''));
    });

5 个答案:

答案 0 :(得分:2)

直接写:

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

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

答案 1 :(得分:2)

您的代码没有错误

提供它在DOM加载后运行,这意味着在

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

此外,如果您只使用迭代将事件绑定到当前元素,则不必使用每个元素。

您可以使用

直接绑定到整个群组
$("button")
    .bind("mouseenter", function() { $(this).css("border", "1px gray outset") })
    .bind("mouseleave", function() { $(this).css("border", "none") });

答案 2 :(得分:1)

无需在each()循环中分配事件处理程序。单独的选择器将返回一个元素数组,然后jQuery将事件应用于这些元素:

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

Example fiddle

答案 3 :(得分:1)

虽然原始代码is working just fine不是原样,但我建议您使用.hover()方法,该方法完全相同但代码较少:

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

Live test case。  

答案 4 :(得分:1)

你可能想要这个

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