Semantic-ui popup 动态内容
Semantic-ui popup Dynamic content
语义-ui 版本。 2.0.8。
我目前使用以下方法在弹出窗口中加载动态内容
JAVASCRIPT
var popupContent = null;
var popupLoading = '<i class="notched circle loading icon green"></i> wait...';
$('.vt').popup({
inline: true,
on: 'hover',
exclusive: true,
hoverable: true,
html: popupLoading,
variation: 'wide',
delay: {
show: 400,
hide: 400
},
onShow: function(el) { // load data (it could be called in an external function.)
var then = function(r) {
if (r.status) {
popupContent = r.data; // html string
} else {
// error
}
};
var data = {
id: el.dataset.id
};
ajax.data('http://example.site', data, then); // my custom $.ajax call
},
onVisible: function(el) { // replace popup content
this.html(popupUserVoteContent);
},
onHide: function(el) { // replace content with loading
this.html(popupLoading);
}
});
HTML
<h2 data-id="123" class="vt">10</h2>
<div class="ui popup" data-id="123"></div>
有没有办法简化整个过程?
例如在加载新内容后使用 element.popup ('refresh')?
我试过了:
JAVASCRIPT
...
if (r.status) {
$('.ui.popup[data-id="123"]').html(r.data);
}
...
但它不起作用。
我也尝试使用(替换)数据内容到 h2.vt 但没有。
想到的唯一改进是让代码更简洁(你只需要 onShow 事件,它会在 在 弹出窗口显示之前触发)并避免使用全局变量 (popupContent).
就是说,主要思想基本相同 - 当弹出窗口应该显示时,您将其内容替换为一些虚假内容(加载动画),然后触发 $.ajax
并更新弹出窗口内容一旦请求完成。
var popupLoading = '<i class="notched circle loading icon green"></i> wait...';
$('.vt').popup({
inline: true,
on: 'hover',
exclusive: true,
hoverable: true,
html: popupLoading,
variation: 'wide',
delay: {
show: 400,
hide: 400
},
onShow: function (el) { // load data (it could be called in an external function.)
var popup = this;
popup.html(popupLoading);
$.ajax({
url: 'http://www.example.com/'
}).done(function(result) {
popup.html(result);
}).fail(function() {
popup.html('error');
});
}
});
语义-ui 版本。 2.0.8。 我目前使用以下方法在弹出窗口中加载动态内容
JAVASCRIPT
var popupContent = null;
var popupLoading = '<i class="notched circle loading icon green"></i> wait...';
$('.vt').popup({
inline: true,
on: 'hover',
exclusive: true,
hoverable: true,
html: popupLoading,
variation: 'wide',
delay: {
show: 400,
hide: 400
},
onShow: function(el) { // load data (it could be called in an external function.)
var then = function(r) {
if (r.status) {
popupContent = r.data; // html string
} else {
// error
}
};
var data = {
id: el.dataset.id
};
ajax.data('http://example.site', data, then); // my custom $.ajax call
},
onVisible: function(el) { // replace popup content
this.html(popupUserVoteContent);
},
onHide: function(el) { // replace content with loading
this.html(popupLoading);
}
});
HTML
<h2 data-id="123" class="vt">10</h2>
<div class="ui popup" data-id="123"></div>
有没有办法简化整个过程? 例如在加载新内容后使用 element.popup ('refresh')? 我试过了:
JAVASCRIPT
...
if (r.status) {
$('.ui.popup[data-id="123"]').html(r.data);
}
...
但它不起作用。 我也尝试使用(替换)数据内容到 h2.vt 但没有。
想到的唯一改进是让代码更简洁(你只需要 onShow 事件,它会在 在 弹出窗口显示之前触发)并避免使用全局变量 (popupContent).
就是说,主要思想基本相同 - 当弹出窗口应该显示时,您将其内容替换为一些虚假内容(加载动画),然后触发 $.ajax
并更新弹出窗口内容一旦请求完成。
var popupLoading = '<i class="notched circle loading icon green"></i> wait...';
$('.vt').popup({
inline: true,
on: 'hover',
exclusive: true,
hoverable: true,
html: popupLoading,
variation: 'wide',
delay: {
show: 400,
hide: 400
},
onShow: function (el) { // load data (it could be called in an external function.)
var popup = this;
popup.html(popupLoading);
$.ajax({
url: 'http://www.example.com/'
}).done(function(result) {
popup.html(result);
}).fail(function() {
popup.html('error');
});
}
});