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

时间:2014-10-31 13:46:53

标签: javascript jquery

我需要在没有冲突模式下运行jQuery。我有一个链接,点击时打开一个对话框功能。在控制台中,我收到一条错误,指出 - '未捕获的ReferenceError:show_appeal_dialog未定义'

这是链接:

<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。

2 个答案:

答案 0 :(得分:1)

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

你应该摆脱丑陋的内联点击处理程序,如

&#13;
&#13;
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"));
  });
});
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

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

要么摆脱$j(function(){包装函数,要么在内联onclick属性的情况下挂钩事件。