jquery尝试使用keypress事件删除突出显示的元素

时间:2012-05-20 07:05:29

标签: javascript jquery

我使用以下代码突出显示元素:

$(".ss").live({ 
    mouseenter: function () { HighLight(this) }, 
    mouseleave: function () { OffLight(this); }, 
      keypress: function () { KeyOperation(this); }
});

function HightLight(s)
{
  $(s).css({border : "1px solid red"});
}
function OffLight(s)
{
  $(s).css({border : "0"});
}
function KeyOperation(s)
{
  $(s).remove();
}

KeyOperation()功能未在按键上执行。

我试图在用户突出显示任何元素时尝试这样做,并且在突出显示时,如果他按Delete key,则应删除该元素。但这不起作用,有人可以告诉我怎么办此?

1 个答案:

答案 0 :(得分:3)

我相信这就是你所追求的。将鼠标悬停在任何.ss元素上将添加一个临时类。如果用户随时按下键46,则将删除具有该类的项目。见下面的工作小提琴。

// Bind to a closer parent if possible
$(document)
    .on("keyup", function(e){
        if ( e.which === 46 ) $(".removeMe").remove(); 
    })
    .on("mouseenter mouseleave", ".ss", function(f){
        $(this).toggleClass("removeMe", f.type === "mouseenter" );
    });

从这个例子中可以清楚地看出,不再鼓励$.live进行事件委托。从这里开始使用$.on代替。

小提琴:http://jsfiddle.net/YS7jH/2/