Jquery:触发'点击' on' mouseout'动态

时间:2016-05-02 07:55:01

标签: jquery angularjs

我知道问题似乎很容易,但事实并非如此。

请允许我详细说明

任务 使用动态提供的元素绑定动态提供的事件,以引发动态提供的事件。

我知道上面的任务看起来很混乱。所以为了做到这一点,我写了一些代码,因为它似乎不起作用。任何建议都非常感谢。

非常感谢

PLUNKER

我有3个变量

var elementId = 't'; /// the id of an element on which the binding is performed
var triggerOn = 'mouseout'; /// the event that is going to be bind
var triggerEvent = 'click'; /// the event that is going to be raised on the occurrence of the above event


///function that is binding the event with element
var triggeror = function (eleId, trgOn, TrgEve, isBind) {

    /// if isbind is true then bind else unbind
    if (isBind === true) {
        $('#' + eleId).bind(trgOn, triggerFun);  /// problem
    }
    else {
        $('#' + eleId).unbind(trgOn, triggerFun); /// problem 
    }

    var self = this;

    /// the event that is fired with the binded event is occured
    function triggerFun() {
        $('#' + self.eleId).trigger(self.TrgEve); ///trigger the another event
    }
};



/// fired when the document is ready
$(document).ready(function () {

    /// on text box click show an alert and un bind the trigeror
    $("#t").bind('click', function () {
        /// showing alert
        alert();
        /// unbinding
        triggeror(elementId, triggerOn, triggerEvent, false);
    });

    /// bind the mouseout to click on textbox
    triggeror(elementId, triggerOn, triggerEvent, true);
});

问题 事件没有被提升

2 个答案:

答案 0 :(得分:1)

固定

https://plnkr.co/edit/6JQpvPkcRtw0qw2J2amv?p=preview

//triggeror(elementId, triggerOn, triggerEvent, false);

有一些问题,如:

首次点击后取消绑定

绑定,重新绑定,重新绑定。

绑定时,您正在调用该函数而不是链接到它

$('#' + eleId).bind(trgOn,triggerFun(eleId, TrgEve));

更改为

$('#' + eleId).bind(trgOn,function(){ triggerFun(eleId, TrgEve) });

退房并告诉我们

答案 1 :(得分:1)

你的plunkr中的问题是你的绑定事件中的函数会被立即调用。

尝试在类似的函数中添加它们: -

var triggeror = function (eleId, trgOn, TrgEve, isBind) {

    /// if isbind is true then bind else unbind
    if (isBind === true) {
        $('#' + eleId).bind(trgOn, function(){
          triggerFun(eleId, TrgEve);
        });
    }
    else {
        $('#' + eleId).unbind(trgOn);
    }
};

Updated Plunkr

注意:

  

<强> .bind()

     

从jQuery 1.7开始,.on()方法是首选方法   将事件处理程序附加到文档。