我想在keyup上使用slideDown div。但是当我在帖子或get方法中使用perl scripts/get_maintainer.pl [OPTIONS] -f <file>
选择时,它不起作用。外面呢。但在帖子内部它不起作用。
这是我的代码。
$(this)
在这段代码中,我试图让“搜索”类的下一个父级将其向下滑动。但是一旦我使用$('.search').keyup(function() {
var ID = $(this).parent().find('.hiddenid').val();
var Search = $(this).val();
if (Search == "") {
$(this).parent().next().slideUp('fast');
} else {
$.get('getphone.php', {
ID: ID,
Search: Search
}, function(D) {
$(this).parent().next().html(D).slideDown(1000);
});
}
});
它就无效。
答案 0 :(得分:1)
var $this= $(this);
说明:这是一个范围问题,你的else中的$(this)命令指向另一个元素
$('.search').keyup(function(){
var $this= $(this);
var ID = $this.parent().find('.hiddenid').val();
var Search = $this.val();
if(Search == ""){
$this.parent().next().slideUp('fast');
}
else{
$.get('getphone.php',{ID:ID,Search:Search},function(D){
$this.parent().next().html(D).slideDown(1000);
});
}
});
答案 1 :(得分:0)
$(this)不起作用的原因是因为它在另一个函数中。通常为此,$ this用作解决方案,如另一个答案中所示。但是考虑到在这种情况下你只想将url的输出添加为html,你可以在load
函数的帮助下简化get函数,这样你就没有额外的功能了需要$ this声明。
else {
$(this).parent().next().load('getphone.php',{ID:ID,Search:Search})
.slideDown(1000);
}
其余代码与原始代码保持一致。如果您希望仅在加载后调用slideDown
选项,则可以将其用作回调。
else {
$(this).parent().next().load('getphone.php',{ID:ID,Search:Search},
function(){
$(this).slideDown(1000)
});
}
这再次对您的具体案例有帮助。