请教jquery函数操作

我是一名学生,我学习编程不久。下面的代码比实际代码简化了以供解释。'test()'实际上是获取数据的Ajax函数。我的目标是为分页操作制作“标签”。但是当我单击“a tag”时,“$(document).ready”内部的“test()”在“a tag”点击事件发生后被调用。所以页面总是回到1。我不知道为什么会发生这种情况。有人可以帮助我吗?谢谢你!

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js"></script>

<script type="text/javascript">

var page = 1;

$(document).ready(function(){

    test();

    alert(page);

});

function test(){

    for(var i = 1; i <= 3; i++) {

        var a = $("<a></a>").text(i).attr({

            href: "",

            idx: i

        });

        a.preventDefault;

        $(a).click(function(){

            page = $(this).attr("idx");

            test();

            alert(page);

        });

        $("#pageLink").append(a," ");

    }

}

</script>

</head>

<body>

hello!

<div id="pageLink"></div>

</body>

</html>



慕桂英4014372
浏览 84回答 1
1回答

慕桂英3389331

由于某种原因,您在 test() 内部调用 test() 。您还需要更改一些小事情jQuery 对象带有 $ 前缀。var $a=...以避免歧义。PreventDefault用于事件,而不是 jQuery 对象。$a.click(function(event){event.preventDefault();...});否则它会按我相信您想要的方式工作,在单击时提醒页码。<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js"></script><script type="text/javascript">$(document).ready(function(){    createLinks();});function createLinks(){    for(var i = 1; i <= 3; i++) {        var $a = $("<a></a>").text(i).attr({            href: "",            idx: i        });               $a.click(function(event){            event.preventDefault();            page = $(this).attr("idx");            // why are you calling this again? // test();            // maybe you want to load something // loadSomething(page);            alert(page);        });        $("#pageLink").append($a," ");    }}</script></head><body>hello!<div id="pageLink"></div></body></html>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript