-1

当我浏览菜单时,我只想更改 contentarea div,而不是重新加载整个页面。我想使用 jquery 加载函数从另一个页面(来自 members.html div colTwo)读取 div 并将其插入页面(进入 div contentarea)。我一直在尝试,但无法让它发挥作用。

编辑此脚本的任何帮助都会有所帮助!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>My Title</title>
<link href="default.css" rel="stylesheet" type="text/css" />
</head>

<script type="text/javascript" src ='http://code.jquery.com/jquery-1.9.1.min.js'</script>
<script type="text/javascript">
$(document).ready(function() {
function memberspage(){
    $('#contentarea').load('members.html #colTwo');
}
});
</script>

<body>
<div id="header">
    <h1>My Title</h1>
</div>
<div id="content">

    <div id="colOne">

        <div id="menu1">
            <ul>
                <li><a href="#" onclick='memberspage()'>Members</a></li>
            </ul>
        </div>
        <div class="margin-news">
            <h2>Recent Updates</h2>
            <p><strong>None At This Time</strong> </p>
        </div>
    </div>

    <div id="contentarea"><h2>Starting Text</h2></div>
    <div style="clear: both;">&nbsp;</div>
</div>

</body>
</html>
4

3 回答 3

3

问题是您已经memberspage()在文档就绪处理程序中声明了您的函数,这意味着当您尝试从锚元素上的内联处理程序调用它时它不在范围内onclick- 像这样的内联属性只能访问全局函数。

您可以通过将函数声明移出准备好的文档(使其成为全局)来解决此问题,但更好的选择是将点击处理程序与 jQuery 绑定:

$(document).ready(function() {
    $("#menu1 a").click(function(e){
        $('#contentarea').load('members.html #colTwo');
        e.preventDefault();
    });
});

我添加e.preventDefault()了停止锚点单击的默认行为,否则可能会滚动回页面顶部。(在内联处理程序中,您将通过返回 false 来获得相同的效果。)

另请注意<script>,包含 jquery.js 的元素在关闭>之前缺少关闭</script>

于 2013-05-09T20:42:40.693 回答
2

您需要在全局范围内定义函数以在基于属性的事件中使用它。

<script type="text/javascript">
function memberspage(){
    $('#contentarea').load('members.html #colTwo');
}
</script>
于 2013-05-09T20:44:35.873 回答
-2

memberspage() 已定义,但您没有从任何地方调用它。

于 2013-05-09T20:42:14.390 回答