我试着在一秒钟后隐藏我的gif图像:
$('input.sortInp').change(function () {
$(this).parents('.float_left').find('.sortLoaderDiv').html('<img class="sortLoader" src="/images/icons/loading_small1.gif">');
setTimeout(function () {
$(this).parents('.float_left').find('.sortLoaderDiv').html("Some text");
},1000);
});
我看到了我的gif,但它并没有隐藏在我的setTimeout
函数中。
如何停止此gif并替换div文本?感谢。
答案 0 :(得分:2)
试试这个
from itertools import chain
def slots_for_instance(inst):
def _slots_for_class(c):
slots = getattr(c, '__slots__', ())
if isinstance(slots, str):
# __slots__ can be a string naming a single attribute
slots = (slots,)
return set(chain.from_iterable(
getattr(_slots_for_class(c) for c in type(inst).__mro__))
答案 1 :(得分:1)
我能想到的最佳解决方案是使用闭包变量。
问题是:setTimeout()
的回调是与主线程分开执行的。
回调的执行上下文将有所不同,因此回调内部不会指向与setTimeout外部相同的对象,在这种情况下是悬停的.sortInp
元素。
$('input.sortInp').change(function () {
$(this).parents('.float_left').find('.sortLoaderDiv').html('<img class="sortLoader" src="https://opensource.org/files/google.png">');
var self = $(this);
setTimeout(function () {
self.parents('.float_left').find('.sortLoaderDiv').html("Some text");
},1000);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="float_left">
<input type="text" class="sortInp">
<div class="sortLoaderDiv"></div>
</div>
&#13;
答案 2 :(得分:0)
当您html()
.sortLoaderDiv
时,input.sortInp
中的所有代码都会消失。因此,您的输入input.sortInp
也会消失。因此jQuery无法在setTimeout函数中找到输入input.sortInp
。发生这种情况是因为您选择了选择器的父类。更正您的代码,以便html()
方法不会删除$('input.sortInp').change(function () {
$('.sortLoaderDiv').html('<img
class="sortLoader" src="/images/icons/loading_small1.gif">');
setTimeout(function () {
$('.sortLoaderDiv').html("Some text");
},1000);
}
。或者,试试这个,
TabItem tabItem = new TabItem();
var stackPanel = new StackPanel();
var stackPanelToolTip = new System.Windows.Controls.ToolTip();
stackPanelToolTip.Content = "ToolTip content";
stackPanel.ToolTip = (stackPanelToolTip);
tabItem.Header = stackPanel;