Jquery事件链接

时间:2009-01-16 20:12:07

标签: javascript jquery

基于此question

我不想乱丢我准备好的东西等待“点击事件”和“更改事件”以及“鼠标悬停事件”我希望在单个功能或事件中拥有所有这些东西。

是否可以将事件链接在一起。我想要捕获的不仅是一个键盘,还有用户不在键盘上的点击或更改。

<script language="javascript" type="text/javascript">
$(document).ready( function () {
    setMaxLength();
    $("textarea.checkMax").keyup(function(){ checkMaxLength(this.id); } );
    $("textarea.checkMax").mouseover(function(){ checkMaxLength(this.id); } );
});
</script>

这有效

$(document).ready( function () {
    setMaxLength(); 
    $("textarea.checkMax").bind("click mouseover keyup change", function(){checkMaxLength(this.id); } )
});

2 个答案:

答案 0 :(得分:18)

我认为你正在寻找绑定。绑定可以使用单个调用而不是使用链来将多个事件连接到同一个函数:

$("textarea.checkMax").bind("keyup mouseover", checkMaxLength);

答案 1 :(得分:5)

任何返回jQuery对象的东西都可以用来链接。通常,一切都返回jQuery对象,所以如果API没有明确说明它没有,那么特定方法可能会返回jQuery对象并且可以被链接。

在事件的情况下,是的,它们确实返回了jQuery对象,因此可以被链接。 See Here

在您的情况下,您可以创建一个带有一个参数的外部函数,即事件发生的对象,然后检查它的长度,或者您想要做的任何其他事情。然后,您只需拨打mouseUp(myFunction).mouseOut(myFunction).keyPress(myFunction)或其他您想要链接在一起的其他内容。

这是一个更明确的例子:

<script language="javascript" type="text/javascript">
$(document).ready( function () {
    setMaxLength();
    $("textarea.checkMax").keyup(checkMaxLength()).
        mouseover(checkMaxLength(this.id));
});
</script>