试图让jquery加载工作

时间:2013-05-09 20:38:34

标签: javascript jquery

当我浏览菜单时,我只想更改contentarea div而不是重新加载整个页面。我想使用jquery load函数从另一个页面读取div(来自members.html div colTwo)并将其插入页面(到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>

3 个答案:

答案 0 :(得分:3)

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

你可以通过将函数声明从文档中移出(使其成为全局)来解决这个问题,但更好的选择是将click处理程序与jQuery绑定:

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

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

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

答案 1 :(得分:2)

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

<script type="text/javascript">
function memberspage(){
    $('#contentarea').load('members.html #colTwo');
}
</script>

答案 2 :(得分:-2)

memberspage()已定义,但您无法从任何地方打电话。