使用全局变量的jquery对话框标题未定义
问题:jquery对话框标题为undefined,使用全局变量
原因:
- 可能是因为在使用全局变量时未正确赋值给对话框的标题属性,导致标题显示为undefined。
解决方法:
- 确保全局变量已正确赋值给对话框的标题属性。
示例代码:
// 全局变量定义 var dialogTitle = "对话框标题"; // 对话框初始化 $( "#dialog" ).dialog({ title: dialogTitle, // 将全局变量赋值给对话框的标题属性 // 对话框的其他属性... });
通过以上方法,可以确保全局变量正确赋值给对话框的标题属性,避免出现标题为undefined的问题。
问题出现的原因是在实例化对话框时,title: 'Edit box' + ' ' + box
这行代码会被执行,而此时box
变量是未定义的。当你在click
事件中设置box
时已经太晚了,因为标题已经被设置好了。解决这个问题的方法是在click
事件中实例化对话框,并将box
变量作为参数传递给dialog()
方法。以下是一种解决方法的示例代码:
HTML
<button data-title="Apple">OPEN 1</button>
<button data-title="Banana">OPEN 2</button>
<div id="MyDialog">
Example Dialog Content
</div>
JQUERY
var globalTitle = ''; // Your global variable // Startup operations $(function () { $('#MyDialog').hide(); $('button').click(function () { openMyDialog($(this).data('title')) }); }); // Open the dialog using the global myTitle variable function openMyDialog(customTitle) { globalTitle = customTitle; $('#MyDialog').dialog({title : globalTitle}); }
需要注意的是,使用了HTML5风格的data-
属性,并通过jQuery的.data()
函数来获取这些属性的值。另外,代码中使用了一个全局变量globalTitle
,但实际上并不需要它。更好的做法是将customTitle
直接传递给dialog()
方法,如$('#MyDialog').dialog({title : customTitle});
。
这样就可以在点击事件中传递box
给openMyDialog
函数。需要注意的是,在设置title
时,box
是未定义的,但在调用jAlert
时,box
已经被定义了。你需要理解JavaScript代码的生命周期,函数代码在被调用时才会执行。任何在函数外部的代码都会立即执行。