所以基本上我有几个链接需要显示滑动面板。我的初始代码是这样的。
function view(panel){
$(panel).slideToggle();
};
$('#link1').click(function(){
view('#panel1');
});
所以我现在的问题是,在链接旁边,我想包括一个箭头,当点击链接时向上,面板向下滑动,当点击时隐藏它,面板向上滑动,表明再次点击链接将隐藏面板。箭头被赋予class="arrow",并且是链接的直接子级。
function view(panel){
$(panel).slideToggle();
};
$('#link1').click(function(){
view('#panel1');
$(this).children('.arrow').toggle();
});
这是可行的,但我不想为每个链接重复$(this).children('.arrow').toggle;
(会有很多)。所以我就这么做了。
function view(panel){
$(panel).slideToggle();
$(this).children('.arrow').toggle();
};
$('#link1').click(function(){
view('#panel1');
});
此操作不起任何作用,箭头仍显示:无。为什么?我看不出有什么不同的解释。$(this)不能在被调用的单独函数中使用吗?我试过搜索,但不知道如何搜索这种问题,除了。。。。。打好那个问题,我没有得到任何有用的结果。有人能告诉我如何通过在函数中定义它来实现这一点吗?这样我就不必为每个链接重复代码了?
您可以这样做:
view.call(this, '#panel1');
这将保留上下文。或者你可以这样做:
function view(panel, link){
$(panel).slideToggle();
$(link).children('.arrow').toggle;
};
$('#link1').click(function(){
view('#panel1', this);
});
你也可以试试这样的东西:
$('#link1, link2' /* or 'a.link', etc */, function() {
// assuming the has is the panel #panel1
//$(this.hash).slideToggle();
// Or using what you already have
$('panel' + this.id.match(/d/)).slideToggle();
$(this).children('.arrow').toggle;
// Then do something based on the id?
return false;
});