在我的布局中,当你点击div
时,我指的是一个jquery函数echo '<div class="fright menu_opcion" onclick="cambiarMenu(-1, \'users\', \'panel\');">Inicio</div>';
echo '<div class="fright menu_opcion" onclick="cambiarMenu(-1, \'eventos\', \'index\');">Eventos</div>';
echo '<div class="fright menu_opcion" onclick="cambiarMenu(-1, \'eventos\', \'add\');">Crear evento</div>';
HTML code:
<div class="fright menu_opcion" onclick="cambiarMenu(-1, 'users', 'panel');">Inicio</div>
<div class="fright menu_opcion" onclick="cambiarMenu(-1, 'eventos', 'index');">Eventos</div>
<div class="fright menu_opcion" onclick="cambiarMenu(-1, 'eventos', 'add');">Crear evento</div>
但总是得到这个错误:
功能:
<script>
cambiarMenu = function( evento_id, controller, action ) {
if (evento_id == 0)
return;
url='<?php echo $this->Html->url(array('admin'=>'true',
'plugin'=>null,
'controller' => 'menus',
'action' => 'menu_change'));?>/'+evento_id;
$.post(url, function(data) {
if(data)
if (data != -1){
window.location.href = '<?php if ($SuperAdmin) $action = 'view'; else $action = 'view';
echo $this->Html->url(array('admin'=>'true',
'plugin'=>null,
'controller' => 'events',
'action' => $action));?>';
} else {
redirect = ('<?php echo $this->Html->url(array('admin'=>'true',
'plugin'=>null,
'controller'=>'',
'action' => ''));?>/').split('admin');
window.location.href = redirect[0] + 'admin/'+controller+'/'+action;
}
}
);
}
此函数指的是重定向用户的位置,我使用Cakephp为什么代码是。
Uncaught ReferenceError: cambiarMenu is not defined
答案 0 :(得分:1)
是否在页面中定义了javascript函数? 要么 包含该函数的javascript文件是否正确包含? 这可能是一个时间问题。
如果您想要一种更干净,更可靠,更易于调试的方法,请进一步阅读...
使用jQuery事件监听器执行此操作:
<script>
function cambiarMenu(val1,val2,val3)
{
alert('cambiarMenu called with '+val1+','+val2+','+val3);
}
$(document).ready(function(){
$(".menu_opcion")
.click(function(){
var menuVal = $(this).html();
switch(menuVal)
{
case "Inicio":
cambiarMenu(-1, 'users', 'panel');
break;
case "Eventos":
cambiarMenu(-1, 'eventos', 'index');
break;
case "Crear evento":
cambiarMenu(-1, 'eventos', 'add');
break;
default:
}
});
/*etc etc etc....*/
});
</script>
<div class="fright menu_opcion">Inicio</div>
<div class="fright menu_opcion">Eventos</div>
<div class="fright menu_opcion">Crear evento</div>
然后我再次反对使用php echo语句和每行html的zillion引用转义,并且当可以避免时将javascript放在html onClick属性中。
东西更容易调试...
$(document).ready ...处理加载问题。您还可以使用此处理程序策略链接其他事件,例如mouseover等:
$(".menu_opcion")
.click(function(){
var menuVal = $(this).html();
switch(menuVal)
{
case "Inicio":
cambiarMenu(-1, 'users', 'panel');
break;
case "Eventos":
cambiarMenu(-1, 'eventos', 'index');
break;
case "Crear evento":
cambiarMenu(-1, 'eventos', 'add');
break;
default:
}
})
.mouseover(function(){})
.mouseout(function(){});
/*etc etc etc....*/
请注意,分号仅在链的末尾,而不是在每个事件之后...... 干杯!