【发布时间】:2015-04-16 11:46:06
【问题描述】:
我有一个奇怪的问题,希望有人能帮助解决。
问题
当我通过 .load() 函数动态加载 html 时,如果加载的片段中的 html 的任何方面试图访问原始 HTML 页面中的 javascript 查询函数,它就不起作用。示例代码如下:
主 HTML 页面 (main.html)
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head lang="en">
<!--javascript load functions etc... standard header stuff -->
</head>
<body>
<div id="dynamic_section_fragment"></div>
<a href="javascript:" onclick="loadFragment()">Load Fragment</a>
<script type="text/javascript">
// <![CDATA[
function loadFragment() {
$("#dynamic_section_fragment").load("/api/fragment/");
};
$(".checkvalue").click(function () {
$.getJSON("/api/checkvalue", {term: $(this).attr('value')}, function () {
console.info("submitted for checking");
})
});
// ]]>
</script>
</body>
</html>
片段文件 (fragment.html)
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head lang="en">
</head>
<body>
<div th:fragment="check_value">
<br/>
Check the value in the attribute field
<br/>
<a href="javascript:" th:attr="value='123'" class="checkvalue">Check This<a/>
</div>
</body>
</html>
SPRING MVC 控制器方法
@RequestMapping("/api/checkvalue")
public String getFragment(Model model) {
return "fragment :: check_value";
}
所以一系列的行动:
-Main.html 页面加载
-用户点击加载片段超链接
-Javascript动态加载相关片段到div中
-用户点击检查这个超链接,什么都没有发生
我有什么遗漏或需要注意的吗?
就好像 Thymeleaf 已经预先注册了所有可能的事件场景,并且不允许任何其他场景。 我能够让它工作的唯一方法是在片段中注入“checkvalue”javascript,你可以同意这是一种不好的做事方式。
感谢您的帮助。
【问题讨论】:
-
片段是异步加载的吗?
标签: javascript spring thymeleaf