【发布时间】:2013-05-22 05:09:27
【问题描述】:
以下适用于除 IE 9.0.8 以外的所有浏览器。它使用 ajax 请求在 div 中加载调查表单。
$('.tab-content').on('click', '.show_survey_form', function(e) {
e.preventDefault()
target = $(this).attr("data-target")
my_href = $(this).attr("href")
console.log("load: " + target + " target: " + my_href)
// load: #survey_response_form_33 target: /surveys/33/survey_responses/edit_multiple
// Don't make a request unless the form is opening.
if ($(this).hasClass('collapsed')) {
console.log("Making request!")
//$(target).load(my_href)
$(this).html(closeSurveyForm) // Just changes the language on the button
} else {
$(this).html(respondToSurvey) // Just changes the language on the button
}
}
.load 在调试期间被注释掉。 IE 在这种情况下使用 .hasClass 似乎有问题。它在其他地方使用没有问题。
真正奇怪的是,当我打开开发工具窗口的那一刻,它就开始工作了。在此之前它始终不起作用,并且在击中 F12 后始终起作用。
其他问题表明当类包含 \r 字符时 hasClass 方法不起作用,但这里不是这种情况。我正在使用 jQuery 1.8.3。
更新:将 href 更改为“#”并将 URL 写入 data-load 没有效果。除 IE 9.0.8 之外的所有浏览器仍然有效。
【问题讨论】:
-
明确一点,它适用于除 IE9.0.8 之外的所有浏览器。这是否意味着它可以在 IE9 的其他版本中使用? IE8 或 IE10 怎么样?这真的像您暗示的那样特定于版本,还是只是您正在测试它的版本?
-
我敢打赌,线索就在你说“只要我打开开发工具 F12 就可以工作”的地方。我认为这是
console.log在打开 F12 之前无法正常工作的另一个旧问题。见this question for a full answer -
在 IE8 和 IE 10 下都可以使用。我没有用其他版本的 IE9 测试过。
-
你试过没有
console电话吗?因为关于开发工具的那一点使它听起来像是“未定义控制台”问题的一个非常经典的案例。 -
我的意思是IE在打开F12之前没有定义
console对象,所以如果你在代码中有console.log并且不打开F12,那么它将完全失败你描述的方式。你是对的,控制台不是问题的焦点,你也是对的,使用alert()在测试异步代码时会出现其他问题,但我认为如果你完全删除你的调试代码,它会起作用.如果我错了,那么我不知道问题出在哪里,但是发布一个 jsfiddle 示例,我会看看是否可以解决(如果我有时间!)。
标签: internet-explorer-9 jquery-1.8