元素上的jQuery自定义事件处理程序输入

编解码器

这是我有4个框和一个圆圈(只是一些示例元素)的东西,该圆圈的位置是绝对的,并且可以通过触发器自由移动掷框。

现在,我需要在将圆圈输入框中做些事情。我想知道是否有任何方法可以定义自定义事件处理程序,例如“ circleenter”而不是“ mouseenter”

这是一个JSFiddle

鼠标悬停在每个框上时,圆将移动到该框并更改颜色,假设我们也要更改所有通过的正方形的颜色或对路径中的正方形进行其他操作。

脚本:

$(document).ready(function(){
    var circle=$(".circle");
    $(".box").mouseenter(function(){
        var $this=$(this),
            idx=$this.index();
        width=$this.width();
        var animate={left:width*idx+18};
        circle.animate(animate,200,function(){
            $this.css("background","#888");
        });
    });
});

CSS:

#box-wrapper{
    position:relative;
    width:400px;
    height:100px;
}
.box{
    width:75px;
    height:75px;
    border:1px solid #000;
    background:#ccc;
    float:left;
    cursor:pointer;
}
.circle{
    position:absolute;
    width:36px;
    height:36px;
    border-radius:50%;
    background:#fff800;
    left:18px;
    top:18px;     
}

这只是一个例子,所以问题是在这种情况下,我们可以有类似的东西$(".box").on("circleenter")吗?

提前致谢。

鲁斯马斯

您不能使事件自动触发,但是可以使用此处记录的jQuery触发方法来触发自定义事件来自文档的示例:

$( "#foo" ).on( "custom", function( event, param1, param2 ) {
alert( param1 + "\n" + param2 );
});
$( "#foo").trigger( "custom", [ "Custom", "Event" ] );

从注释看来,无论鼠标是否进入圆,您都希望事件随着圆通过正方形而触发。在这种情况下,除了在动画上使用“ progress”选项外,我看不到任何其他解决方案,并检查您是否在每个步骤中都输入了正方形。不过,您需要提防性能问题...

$(document).ready(function(){
    var circle=$(".circle");

    $('.box').on('circleenter', function(){
        $this.css("background","#888");
    });

    $(".box").mouseenter(function(){
        var $this=$(this),
            idx=$this.index();
        width=$this.width();
        var animate={left:width*idx+18};
        var lastBoxId = null;
        circle.animate(animate,
           {duration: 200, 
            progress: function(){
              //Check whether the circle has entered a box
              var currentBox = //Get the current box;
              if(currentBox && currentBox.id != lastBoxId){
                  $(currentBox).trigger('circleenter');
                  lastBoxId = currentBox.id;
              }
            }});
    });
});

以下是一些SO答案,这些答案可能有助于发现元素之间的重叠:

jQuery / JavaScript冲突检测

如何检测重叠的HTML元素

但是,如果没有帮助,谷歌搜索还会发现更多内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使jQuery触发本机自定义事件处理程序

自定义元素,自定义事件处理程序属性

GWT自定义事件处理程序

动态分配的事件处理程序上的自定义事件args

jQuery on事件处理程序:事件委托和传递自定义数据

jQuery自定义事件处理程序,事件名称中带有通配符

使用自定义事件对象触发事件处理程序

Polymer 1.0-绑定事件处理程序,而无需创建自定义元素

如何将事件处理程序分配给自定义元素

如何在具有自定义输入功能的元素上添加onclick事件

在自定义Qt小部件中处理输入事件

jQuery,从自定义事件中删除所有处理程序

了解ActionScript 3自定义事件处理程序

从接口实现自定义事件处理程序

首先强制自定义事件处理程序

在事件处理程序中调用自定义钩子

自定义控件事件处理程序

自定义输入组件上的Vue更改事件

在自定义元素上检测onscroll事件

JMSSerializerBundle上的自定义处理程序将被忽略

如何将过程从自定义单元分配到主窗体上的事件处理程序控件

如何处理模糊并输入自定义Vuetify输入的键入事件?

自定义按钮事件处理的类

角度:自定义管道事件处理

获取在自定义用户控件中声明的事件的所有事件处理程序

鼠标事件后,自定义Carbon键事件处理程序失败

自定义事件调度程序 - JavaFX

本机形式的自定义输入元素

如何在自定义聚合物元素中处理paper-dropdown-close事件