重写jQuery中曾经使用过的元素.click



问题是:我怎样才能使每次调用openZonePupup()时,无论分配给.click函数的是什么,每次调用都会发生变化,因为现在它只在第一次调用openZonePupup()时发生变化

让我先试着通过散文和例子来解释这个程序是做什么的。这是一门在线课程,分为几个单元。一旦点击单元,就会弹出一个对话框,询问用户是否要进行课程或练习,然后课程和练习按钮附带了一个函数,该函数带有与该课程或练习相关的特定变量,并带有.click函数。

问题是,一旦一个单元被点击,使用.click函数应用函数中的特定变量,一旦这个弹出窗口被关闭,用户点击另一个单元,它使用与第一次相同的特定变量。也许看看我的代码会帮助你更好:

弹出HTML:

<div class="jqmWindow" id="dialog">
    <a id="popupHide" href="javascript:;" onclick="$('#dialog').jqmHide();" style=""></a>
    <div id="zoneName"></div>
        <div id="buttons">
            <a id="lessonButton" class="lessonButton">Lesson</a>
        <a id="exerciseButton" class="exerciseButton">Exercise</a>
    </div>
    </div>
</div>

点击单元链接时调用的函数。它将名称应用于弹出式html,并根据指定的变量设置到课程和练习的链接,然后在它显示弹出式后:

function openZonePupup(name,juegoID,tipoID,lang,nivel) {
    $("#zoneName").html(name);
    $(".lessonButton").click(function () { 
    $('#dialog').jqmHide();
        abrirLeccion(juegoID,nivel);    
    });
    $(".exerciseButton").click(function () { 
        obreJoc(juegoID, tipoID, name);
        $('#dialog').jqmHide();
    });
    $('#dialog').jqmShow();
}

openZonePopup由单元的文本调用,例如:

<a href="javascript:;" onclick="abrirZonePopUp('Past Simple - Past Continuous ',8,2,'EN',1);">02</a>
<a href="javascript:;" onclick="abrirZonePopUp('Conjunctions',22,8,'EN',1);">14</a>

我希望你能理解,如果没有留下评论,我会尽快回复,谢谢你能给的任何帮助!

作为第一步,我将尝试在将单击处理程序绑定到函数传递的特定值之前解除它们的绑定。

function openZonePupup(name,juegoID,tipoID,lang,nivel) {
    $("#zoneName").html(name);
    $(".lessonButton").unbind("click").click(function () { 
        $('#dialog').jqmHide();
        abrirLeccion(juegoID,nivel);    
    });
    $(".exerciseButton").unbind("click").click(function () { 
        obreJoc(juegoID, tipoID, name);
        $('#dialog').jqmHide();
    });
    $('#dialog').jqmShow();
}

[我认为]来回答你的问题,而不是只做click,而不是做unbind 然后做 click,你可以使用jQuery的awesome One函数。

function openZonePupup(name,juegoID,tipoID,lang,nivel) {
    $("#zoneName").html(name);
    $(".lessonButton").one('click', function () { 
        $('#dialog').jqmHide();
        abrirLeccion(juegoID,nivel);    
    });
    $(".exerciseButton").one('click', function () { 
        obreJoc(juegoID, tipoID, name);
        $('#dialog').jqmHide();
    });
    $('#dialog').jqmShow();
}

最新更新