作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将数据添加到动态模式中。仅当数据添加到模型后,模态才应显示出来。我尝试使用行 $.when(Ss.pieceInfo(piece)).then(Ss.showInfo());
来实现此目的,但似乎两个函数同时执行。什么
var Ss = {
$modal: $('#piece-modal'),
$title: $('.piece-title'),
$artist: $('.piece-artist'),
$info: $('.piece-info'),
init: function() {
this.bindEvents();
},
bindEvents: function() {
$('.piece').on("click", function(e) {
e.preventDefault();
var piece = $(this).data('slug');
//This doesn't seem to have any effect
$.when(Ss.pieceInfo(piece)).then(Ss.showInfo());
});
},
pieceInfo: function(piece) {
console.log(piece);
$.getJSON(Kirby.baseUrl + '/api/v1/work/' + piece, function(data) {
$.each(data, function(key, val) {
Ss.$title.html(val.title);
Ss.$artist.html(val.artist);
Ss.$info.html(val.text);
})
});
},
showInfo: function() {
var height = $('.primary-info').height();
console.log(height)
Ss.$modal.addClass('modal-active')
Ss.$modal.css('transform','translate3D(0, calc(100% - '+ height +'px), 0)');
},
};
$(document).ready(function(){
Ss.init();
});
最佳答案
这是因为您没有在 Ss.pieceInfo()
方法中返回 Promise,导致它立即得到解决。 As per the documentation for $.when()
:
If a single argument is passed to
jQuery.when()
and it is not a Deferred or a Promise, it will be treated as a resolved Deferred and any doneCallbacks attached will be executed immediately.
为此,您只需稍微更改该方法:返回 $.getJSON
promise 。
pieceInfo: function(piece) {
return $.getJSON(Kirby.baseUrl + '/api/v1/work/' + piece, function(data) {
$.each(data, function(key, val) {
Ss.$title.html(val.title);
Ss.$artist.html(val.artist);
Ss.$info.html(val.text);
})
});
},
关于javascript - AJAX 完成对象字面量后执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46240308/
1.字面常量 (1)字面意思是啥就是啥,看其表示就可以知道其值和类型。 (2)有值无名,一用来初始化变量,与一种字符相关联。 #include <stdio.h>int main()
我是一名优秀的程序员,十分优秀!