Javascript 嵌套jQuery调用:如何找到';发生什么事了?

Javascript 嵌套jQuery调用:如何找到';发生什么事了?,javascript,jquery,Javascript,Jquery,我正在处理一些遗留的jQuery代码,其中有一部分或多或少是这样的: tjq("table#tabla_pedidos tr td").click(function(){ . . . tjq("body").on('click',".popup-delete", function(){ var title = "Confirm"; var questio

我正在处理一些遗留的jQuery代码,其中有一部分或多或少是这样的:

tjq("table#tabla_pedidos tr td").click(function(){
    .
    .
    .
    tjq("body").on('click',".popup-delete", function(){
        var title = "Confirm";
        var question = "Are you sure?";
        var cancel = "NO";
        var accept = "YES";
        tjq.when( dialog(title, question, cancel, accept) ).then(
其中“tjq”是本代码中为避免冲突而赋予“$”的名称

代码的作用是什么?给定一个HTML表,当用户单击它时,它会显示一个弹出窗口,如果用户单击其中的按钮(
”.popup delete“
),它会显示另一个确认弹出窗口

我的问题是第二个确认弹出窗口不起作用。我得到的错误是:

dialog.js:5 Uncaught TypeError: $ is not a function
at dialog (dialog.js:5)
at HTMLAnchorElement.<anonymous> (VM337 scripts.js:388)
at HTMLBodyElement.dispatch (jquery-1.11.3.min.js:4)
at HTMLBodyElement.r.handle (jquery-1.11.3.min.js:4)
Uncaught TypeError: tjq.dialog is not a function
at HTMLAnchorElement.<anonymous> (VM375 scripts.js:388)
at HTMLBodyElement.dispatch (jquery-1.11.3.min.js:4)
at HTMLBodyElement.r.handle (jquery-1.11.3.min.js:4)
我认为这一定与嵌套的jQuery调用有关,但代码中还有其他一些似乎可以工作(至少使用“tjq.”前缀)。我怎么才能开始调试这个呢?发生什么事了

编辑:回答以下问题。首先,我认为“dialog()”是jQuery附带的“dialog”小部件。事实证明情况并非如此。下面是dialog.js:

function dialog(title, question, cancel, accept){

    var answer = new jQuery.Deferred();

    $("body").append("<div id='dialog'><div class='dialog-bg'></div><div class='dialog-window'><p class='dialog-title'>"+ title +"</p><p class='dialog-question'>"+ question +"</p><div class='dialog-actions'><button class='dialog-cancel'>"+ cancel +"</button><button class='dialog-accept'>"+ accept +"</button></div></div></div>");

    $("body").css("overflow", "hidden");

    $("body").on('click', '.dialog-cancel', function(){
        $("body").css("overflow", "auto");
        $("#dialog").remove();
        answer.resolve (false);
    });

    $("body").on('click', '.dialog-accept', function(){
        $("body").css("overflow", "auto");
        $("#dialog").remove();
        answer.resolve (true);
    });

    return answer.promise();
};
加载页面的方式为:

  • jQuery 1.11.3
  • jQuery迁移1.2.1
  • 上面提到的“tjq”事件
  • jqueryui

  • 好的,正如上面Anton所提到的,事实证明我已经将jQuery映射到“tlq”而不是默认的“$”,但是没有修改dialog.js来解释这一点。为什么我没有注意到?因为我认为“dialog()”是默认的jQuery对话框小部件,而不是我们自己的函数

    此外,“dialog.js”在我们网站的另一部分中使用,jQuery没有映射,在那里它工作得很好。看起来有人只是复制并粘贴了代码,而没有检查任何其他内容


    我不知道是让这个问题继续存在还是删除它;我怀疑其他用户会在这里找到任何有用的答案…

    你能发布对话框函数的代码吗?你如何用
    tjq
    覆盖
    $
    ?这是一个配置文件,你在把它包装成一个IIFE吗?你的代码在什么地方调用了吗?否则,
    $
    仍映射到jQuery。而且,为什么不在完成此操作后使用
    jQuery….
    调用jQuery,而不是创建自定义引用呢?向我们展示
    dialog.js
    。看来你忘了通过jQuery了抱歉耽搁了,伙计们。我已经编辑了这个问题
    tjq = jQuery.noConflict();