编程语言
首页 > 编程语言> > javascript – jQuery函数.on()不适用于“click”事件

javascript – jQuery函数.on()不适用于“click”事件

作者:互联网

我正在使用MS Dynamics CRM 2013,我面临的问题是,当我想在导航窗格中的“Documents”按钮中添加事件处理程序时,

jQuery函数.on()不适用于“click”事件.它适用于“mouseover”或“mouseup”事件,但不适用于“click”.
这是我正在使用的代码:

$("#crmMasthead").on( "click", "#Node_navDocument", function(){ alert("Success!"); } );

Where:
#crmMasthead - static selector;
#Node_navDocument - id of the button "Documents", that I want to reload.

请帮我解决这个问题.先感谢您!

编辑

这是我正在处理的HTML:

用户在CRM 2013中打开导航窗格之前:

<body>
...
    <div id="crmMasthead" tabindex="-1">
        <div class="navStatusArea" id="navStatusArea"></div>
        <div class='navBar' id='navBar'>...</div>       
        <div class="navBarOverlay" id="navBarOverlay" style="display: none;">     </div>
    </div>
...
</body>

用户刚刚在CRM 2013中打开了导航窗格:

<body scroll="no">
...
    <div id="crmMasthead" tabindex="-1">
        <div class="navStatusArea" id="navStatusArea"></div>
        <div class='navBar' id='navBar'></div>
Changed:<div class="navBarOverlay" id="navBarOverlay" style="display: block;"></div>
New:    <div class="navActionGroupContainer" style="">
            ...
            <a class="navActionButtonContainer navActionButton     navActionButtonDefault normal " id="Node_navDocument" role="button" title="Documents" href="javascript:;" unselectable="on" style="background-color: #555555">...</a>
            ...
        </div>

    </div>
...
</body>

解决方法:

不幸的是,函数.on()在我的情况下不适用于click事件,因为事件点击#Node_navDocument元素已经绑定到另一个使用event.stopImmediatePropagation()的系统函数,并且所有自定义逻辑都没有执行.

但是,还有另一种方式……

实现点击事件自定义逻辑的主要目标是在此事件后显示具有不同src链接的系统iframe.因此,要解决此任务,我们需要做下一步:

>为某些静态元素(1)创建处理程序,该元素应该绑定元素(2)的onclick事件;
>在元素(2)的onclick事件上创建监听器,以监视iframe是否存在.

元素(1)具有id#TabNode_tab0Tab,element(2) – #Node_navDocument和iframe –
#areaDocumentFrame.

这是代码:

replaceDocumentsLink: function () {
    console.log("Function was started!");
    var listener = {};

    window.top.$("#TabNode_tab0Tab").on("mouseover", function () {
        if (window.top.$('#Node_navDocument').length)
            window.top.$('#Node_navDocument')[0].onclick = function () {
                listener = setInterval(function () {
                    if ($("#areaDocumentFrame").length) {
                        console.log("Frame was found!")
                        $("#areaDocumentFrame").attr("src", "http://www.microsoft.com/");                            
                        clearInterval(listener)
                    }
                    else
                        console.log("Frame was not found!")
                }, 250);
            }
    });  

标签:jquery,javascript,dynamics-crm-2013
来源: https://codeday.me/bug/20190624/1279775.html