2014-10-31 71 views
0

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

这里是链接:

<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(function),并删除了$ j(function),并使用javascript。

回答

1

您的问题是,您已经在文档就绪处理程序范围中定义了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>

0

因为范围是问题所在。你把它包装在一个文件准备好的调用中,并且使这个函数在全局范围内不可用。它与无冲突模式无关。

要么摆脱$j(function(){包装函数,要么挂钩事件,而不是联机onclick属性。