返回按钮回调函数在特定情况下失败或未启动

back button callback function failing, or not firing, under particular condition

本文关键字:启动 失败 在特定情况下 按钮 回调 函数 返回      更新时间:2023-11-10

我正在尝试操作锚点元素(#backButton),以便它在单击时激发JS函数。除了点击以下元素链的情况外,它可以正常工作:#openShow>#openDetailsFromShow>#backButton>#backButton

在最后一个#backButton上,单击预期的JS函数(closeShowProvider())不会激发,而是#backButton恢复到其默认行为。

我已经尝试寻找解决方案,但我担心我对这个问题的理解限制了我解决它的能力。我怀疑这可能与关闭有关,但我可能错了。。。

JSFiddle的(不完全)工作代码https://jsfiddle.net/timothyvictor/u1dv83a1/2/

我真的陷入了困境,非常感谢任何帮助和/或建议。非常感谢,

电视

HTML:

<div class="container">
<a id="backButton" href="#link">Back Button</a>
<input type="text" id="link">
<br>
<button onclick="openShowProvider('id', 'searchProviders.php')" id="openShow">Open Show Provider</button>
<br>
<button onclick="openProviderDetails('NEW', 'searchProviders.php')" id="openDetailsDirect">Open Provider Details Direct</button>
<br>
<button onclick="openProviderDetails('NEW', 'showProvider.php')" style="display:none" id="openDetailsFromShow"> Open Provider Details from Show Provider</button>
<br>
<div id="showProvider" style="display: none;">
    <h1 class="text-center">Show Provider is OPEN!!!!</h1>
</div>
<div class="alert alert-success" id="providerDetails" style="display: none;">
    <h1 class="text-center">Provider Details is OPEN!!!!</h1>
</div>

这是JS:

    function backButton (backFunc, param) {
$('#backButton').unbind().click(function(e){ //using unblind to clear backFunc before binding new event?
    e.preventDefault();
    backFunc(param);
    $(this).unbind('click');
});
}
function openShowProvider(id, return_page){
    if (return_page === 'searchProviders.php') {
        $('#showProvider, #openDetailsFromShow').show();
        $('#openShow, #openDetailsDirect').hide();
    }
    backButton(closeShowProvider, return_page);
}
function openProviderDetails(id, return_page) {
    if (return_page === 'searchProviders.php') {
        $('#openShow, #openDetailsDirect').hide();
    }
    if (return_page === 'showProvider.php') {
        $('#showProvider, #openDetailsFromShow').hide();
    }
    $('#providerDetails').show();
    backButton(closeProviderDetails, return_page);
}
function closeShowProvider(return_page){
    if (return_page === 'searchProviders.php' || return_page === 'providerDetails.php'){
        $('#showProvider, #openDetailsFromShow').hide();
        $('#openShow, #openDetailsDirect').show();
    }
}
function closeProviderDetails(return_page) {
    $('#providerDetails').hide();
    if (return_page === 'searchProviders.php'){
        $('#openShow, #openDetailsDirect').show();
    }
    if (return_page === 'showProvider.php') {
        $('#showProvider, #openDetailsFromShow').show();
        backButton(closeShowProvider, 'providerDetails.php');
    }
} 

希望它能解决你的问题,在附加和删除点击事件时出现了一些错误

jsfiddle.net/u1dv83a1/3/

在这篇文章中,我使用了与您使用的代码相同的代码,但只是更改了中的backButton功能