链接单击上的Javascript和Jquery无冲突功能

Javascript and Jquery No Conflict function on Link Click

本文关键字:Jquery 冲突 功能 Javascript 单击 链接      更新时间:2023-09-26

我需要在无冲突模式下运行jQuery。我有一个链接,点击后会打开一个对话框功能。在控制台中,我收到一个错误,状态为"Uncaught ReferenceError:show_appeal_dialog is not defined"

这是链接:

<a style='color:blue;' href='javascript:void(0)' onclick='show_appeal_dialog(33558)'>Denied</a>

这是jquery:

var $j = jQuery.noConflict();
$j(function(){
function show_appeal_dialog(ponumber){
$j("#appeal_dialog").dialog({
        title: 'Appeal Notes',
        modal: true,
        width: 660,
        height:250,
        open: function() {
            $j(this).html(ponumber);
        },
        buttons: {
            Ok: function() {
            $j(this).dialog("close");
            }
        }
});
}
});

我试图用jQuery替换$j,还更改了var$j(函数),还删除了$j(功能),只使用javascript。

您的问题是在文档就绪处理程序范围中定义了show_appeal_dialog

你应该去掉像这样难看的内联点击处理程序

var $j = jQuery.noConflict();
$j(function() {
  function show_appeal_dialog(ponumber) {
    $j("#appeal_dialog")
      .html(ponumber)
      .dialog({
        title: 'Appeal Notes',
        modal: true,
        width: 660,
        height: 250,
        autoOpen: true,
        buttons: {
          Ok: function() {
            $j(this).dialog("close");
          }
        }
      });
  }
  $j(".anchor").click(function() {
    show_appeal_dialog($j(this).data("popnumber"));
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css" />
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
<a class="anchor" data-popnumber="33558" style='color:blue;' href='#' >Denied</a>
<div id="appeal_dialog" style="display:none;"></div>

因为作用域是问题所在。您将它封装在一个文档就绪调用中,这使得该函数在全局范围内不可用。它与无冲突模式无关。

要么去掉包装函数的$j(function(){,要么用内联onclick属性连接事件。