在我的webapplication中,我有以下功能,可以打开和关闭标签,模拟弹出窗口:
<script>
function load_page(url){
$('#results').css("display", "block");
$('#content').load(url);
}
function close(){
$('#results').css("display", "none");
$('#content').empty();
}
</script>
第一个是完美的,但第二个没有。我将此函数设置为从此处调用:
<div align="right"><button type="button" class="btn btn-lg btn-danger" onclick="close()">Fechar</button></div>
如果我用另一个代码替换此代码(不使用jquery),则该方法有效:
function close() {
document.getElementById("results").style.display = 'none';
document.getElementById("content").innerHTML=' ';
}
有没有办法用jquery做到这一点?
ps。:此代码对此采取行动:
<div class="panel panel-default" id="results">
<div class="panel-heading">
<h1 class="panel-title">Panel title</h1>
<div align="right"><button type="button" class="btn btn-lg btn-danger" onclick="close()">Fechar</button></div>
</div>
<div class="panel-body" id="content">
Panel content
</div>
</div>
答案 0 :(得分:1)
您的代码无效的原因是因为内联事件处理程序实际上并未调用您定义的close
函数。
事件处理程序close
内部引用document.close
,因为document
的属性放在事件处理程序的范围内。您可以使用
onclick="console.log(close === document.close);"
作为处理程序。这是one of the reason why not to use inline event handlers。
解决方案:
document
的属性:http://jsbin.com/zunodako/1/edit?html,js,output。window.close
明确引用该功能。 然而这可能无效,因为window
also has a close
propert y可能无法写入。既然你也承认你没有运行非jQuery版本,那么它与使用jQuery无关。