0

想象一下,一个 jQuery 插件向页面插入一个元素(例如图像),并且该图像具有 Click 事件的事件处理程序。例如,当我单击图像时打开一个弹出 div。

另一方面,我在我的页面中编写了一个函数。例如用于慢速淡入文本框(输入标签)的功能。

所以我们有:

  • 一个jQuery插件
  • jquery 插件添加的图片 -->>> id ="MyImage"
  • 图片点击事件导致--->>弹出一个div
  • 输入标签 --->> id="MyInput"
  • 我隐藏输入的函数--->> hideSlowInput()

重要说明:我不想更改插件。我想覆盖图像的事件处理程序而不更改插件。

编辑:我没有打开 popupdiv 的代码,我只是在 $(document).ready 中启动插件

现在,每次单击图像时,我如何在运行我的功能后强制打开弹出 div ???

4

3 回答 3

1

关注@Ejay 的评论

这基本上是不可能的,至少在文档中没有公开支持{我找不到任何东西......}

但是如果你正在谈论的插件使用 jquery 来绑定打开的弹出 div 处理程序,你可以试试这个:

//declare your function
function myfunction(){
   alert('ok');
}
//bind click handler to image with class 'myclass'
$('.myclass').click(myfunction);

//set this handler in first with keeping other already bound events
var myH = $._data( $(".myclass")[0], "events" ).click.pop();
$._data( $(".myclass")[0], "events" ).click.unshift(myH);

如果没有其他点击处理程序,您可以颠倒顺序:

[].reverse.call($._data($('.myclass')[0]).events.click);

在此处查看通用演示

于 2013-05-04T17:09:45.603 回答
0

按照@roasted的回答

我强制旧事件处理程序作为新事件处理程序的回调运行:

例子:

$('#myBtn').click(function(){
    alert(1);
});

$('#myBtn').click(function(){
    alert(2);
});

$('#myBtn').click(function(){
    alert(3);
});

$('#myBtn').click(function(evt){
    alert(4);
});

//------Adding A Custom Function Befor All Click Event Handlers And Forcing Theme Run As Callback Of The Custom Function--------

console.clear();
var objEvents=jQuery.extend(true, {}, $._data( $("#myBtn")[0], "events" ));
$('#myBtn').unbind('click');

var callEventHandlers=function(myEventName,myEvents){
        $.each(myEvents, function(i, event) {
            if(i==myEventName){
                $.each(event, function(j, h) {
                  //  console.log(h.handler.toString());
                    h.handler.call()
                });
            }
        });
}

$('#myBtn').click(function(evt){
    $(this).fadeOut(3000,function(){callEventHandlers('click',objEvents)});
});
于 2013-05-09T19:03:01.967 回答
0

不清楚你在这里实际需要什么(除非你提供相关代码)但我认为你需要一个委托的点击事件在这里..

由于图像是动态添加的,因此您需要在委托事件上使用..

 $(document).on('click','#MyImage',function(){
     alert('clicked image');
     //codes to open your popopdiv
 });

注意:由于添加了图像,因此您最终可能会拥有相同的图像 IDS(除非您只添加一个图像),这是无效的.. ID 应该始终是唯一的...如果您可以添加图像会更好类而不是id ...并使用类选择器.Myimage..并将其委托给最近的statis父容器比文档本身更好..

于 2013-05-04T16:19:32.220 回答