这是函数的样子:
function changeWidth(el,event) {
event.preventDefault();
if($('#RightSide').is(':visible')){
$('#RightSide').delay(1000).fadeOut(0);
}
else{
$('#RightSide').fadeIn(0);
}
var toggleWidth = $("#LeftPanel").width() == 365 ? "1096px" : "365px";
/* $('#LeftPanel').width(toggleWidth);*/
$('#LeftPanel').animate( {'width': toggleWidth}, 1000);
if($('#LeftPanel').is('.LeftPanelRadius')){
$('#LeftPanel').removeClass('LeftPanelRadius'); return;
}
$('#LeftPanel').addClass('LeftPanelRadius');
}
当有人点击我网站上的图片时,它应该激活。以下是HTML代码:
<img src="images/magCircy.png" width="33px" height="33px" onClick="changeWidth(this,event);"></img>
jQuery和HTML代码工作得很好,但它只适用于jQuery代码是OUTSIDE,这是我所有其他功能所在的一般事项:
$(function() {
});
我之所以试图将它移动到里面这一般的东西,是因为我希望函数changeWidth调用另一个函数来处理那个普通的东西。而且我假设你只能从也在其中的函数调用那些一般内容中的函数。
...对不起,如果这听起来很复杂......如果你能提供帮助,请告诉我。
谢谢。
答案 0 :(得分:1)
我假设你只能从里面的函数中调用那些一般内容中的函数。
这正是你的问题。你试图从外面调用你的处理程序。
这不是“一般事物”;这是一个普通函数,您将$()
函数作为参数传递给它。
你不应该在另一个函数中声明一个函数,除非它只被那个函数使用。
答案 1 :(得分:1)
是的,让我们打破这个。
您的元素包含onclick事件的处理程序。就HTML元素而言,它正在function changeWidth
对象a.k.a.全局范围内寻找window
。
您还在$(function(...));
中定义了代码,该代码本身就是一个函数,因此其中的任何内容都在其自己的本地范围内。
当你的元素触发它的点击事件时,它只知道检查window
changeWidth
解决这个问题的方法(虽然我不建议),就是在你的jQuery函数中创建一个指针:
$(function () {
window.changeWidth = function () { /*code*/ };
});
我建议在这里使用jQuery,因为它听起来像是一大堆代码写在其中。这看起来像是:
$(function() {
$('img[src="images/magCircy.png"]').on( 'click', function() {
//your code here
});
});
或者,您可以直接将changeWidth
函数直接传递给上面的onClick处理程序。
编辑:关闭我的大括号:)