我正在w3schools.com上学习更多关于jQuery的$.getJSON
。那么如何让这段代码只生成一次JSON对象呢?
无论按下按钮多少次。这是我正在谈论的代码附加到代码编辑器的代码。这是link和代码。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.getJSON("demo_ajax_json.js", function(result){
$.each(result, function(i, field){
$("div").append(field + " ");
});
});
});
});
</script>
</head>
<body>
<button>Get JSON data</button>
<div></div>
</body>
</html>
答案 0 :(得分:5)
而不是click
,您可以与one
$(document).ready(function(){
$("button").one("click", function(){
$.getJSON("demo_ajax_json.js", function(result){
$.each(result, function(i, field){
$("div").append(field + " ");
});
});
});
});
.one()方法与.on()相同,除了给定元素和事件类型的处理程序在第一次调用后未绑定
您可以找到有关one
方法here
答案 1 :(得分:1)
在这里,您将使用变量
再使用一个解决方案
$(document).ready(function(){
var clickedOnce = false;
$("button").click(function(){
if(!clickedOnce){
clickedOnce = true;
$.getJSON("demo_ajax_json.js", function(result){
$.each(result, function(i, field){
$("div").append(field + " ");
});
});
}
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<button>Get JSON data</button>
<div></div>
&#13;
使用CSS
属性pointer-events:none;
$(document).ready(function(){
$("button").click(function(){
$.getJSON("demo_ajax_json.js", function(result){
$.each(result, function(i, field){
$("div").append(field + " ");
});
});
$(this).css({
'pointer-events': 'none'
});
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<button>Get JSON data</button>
<div></div>
&#13;
希望这会对你有所帮助。
答案 2 :(得分:1)
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.getJSON("demo_ajax_json.js", function(result){
$.each(result, function(i, field){
$("div").append(field + " ");
};
return false;
);
});
});
});
</script>
成功返回false时,此脚本将运行一次。或者您可以隐藏或禁用此按钮。