0
我有我的网页上内嵌脚本,例如:JavaScript函数只能使用一次
<script type="text/javascript">
var rootPath = '<%= Url.Content("~/") %>';
$(document).ready(function() {
$('#logonStatus').click(function() { loadLoginForm(); });
alert('Document Ready');
});
function loadLoginForm() {
if(!serenity.tools.isStyleSheetLoaded('redmond.css')) {
$('head').append('<%= Url.StyleTag("Redmond/redmond.css", MediaTypes.Screen) %>');
}
if(!serenity.tools.elementExists($('#logonContainer'))) {
$.ajax({
async: false,
cache: false,
datatype: 'html',
success: function (data) { $('body').append(data); },
type: 'GET',
url: '/Membership/LogOn'
});
}
$('#logonContainer').dialog({
modal: true,
hide: 'slide'
});
}
</script>
我也是加载自定义JavaScript文件,它的内容是这样:
var serenity = new function() {
$(document).ready(function() {
jQuery.ajaxSetup({
beforeSend: function (xhr) {
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
}
});
});
this.tools = new function() {
this.isStyleSheetLoaded = function (fileName) {
$(document.styleSheets).each(function() {
if (this.href.toLowerCase().indexOf(fileName) != -1) {
this.isStyleSheetLoaded = true;
return;
}
});
this.isStyleSheetLoaded = false;
}
this.elementExists = function (element) {
this.elementExists = element.length != 0;
}
}
}
由ajax调用加载的文件只是一个带有包含输入元素的表的div。该文件不包含任何JavaScript。
我的问题是,我第一次调用isStyleSheetLoaded它工作得很好,但文件加载后,对话框显示并关闭我点击链接,触发loadLoginForm函数,但这次它说isStyleSheetLoaded不是一个功能。这显示在所有浏览器中,所以我99%确定这是我的问题,但我不知道它是什么。有人能指点我正确的方向吗?
在此先感谢。
这是它,太感谢你了。我多年没有接触到JavaScript,并且在返回另一个函数中的值时遇到了问题,并进行了搜索,发现一篇博客说我必须将方法名称设置为值以返回它。非常感谢,只要我能,我会接受你的答案。 – joshlrogers 2010-08-24 13:38:29
+1同样从'elementExists'返回一个值。这不是VBscript! – bobince 2010-08-24 13:39:52