以下内容适用于除ie9.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后它一直起作用。
其他问题说hasClass方法不工作时,类包含一个r字符,但这不是这里的情况。我使用jQuery 1.8.3.
Update:将href改为"#"并将URL写入data-load中没有效果。
这与jQuery或hasClass()
无关。这完全取决于你对console.log()
的使用。
重要的是要知道IE在打开F12开发工具窗口之前不会定义console
对象。
这意味着在您打开它之前,console
调用将抛出javascript"对象未定义"错误。这将使它周围的代码看起来不工作,但它实际上只是控制台对象丢失的事实。
您可能在其他旧的浏览器中有类似的效果,但大多数当前的浏览器版本不这样做——他们立即定义console
对象,无论开发工具是否打开。IE是唯一的例外。
您可以通过(a)不使用console
来解决这个问题,除非您实际上正在调试并打开开发工具,或者(b)向所有console
调用添加if(console)
检查。这将防止错误。
更多信息在这里:为什么JavaScript只工作后打开开发人员工具在IE一次?