我想直接将参数传递给JQuery中的函数。
我用过
$(this).prev()
访问我之前的参数。但是我想在没有prev方法的情况下随时访问此前一个参数。我目前的代码如下
$(".a").click(function(){
$(this).next().slideToggle(1000,function(){
$(this).prev().css("background-color","green");
});
});
答案 0 :(得分:0)
使用闭包将事件对象和元素合并到一个参数列表中:
$(".a").click(function(eve){
(function ( e, p ) {
$(e.target).next().slideToggle(1000,function(){
$(p).css("background-color","green");
});
})( eve, $(this).prev() );
});
您可以选择不发送事件对象:
$(".a").click(function(eve){
(function ( n, p ) {
$(n).slideToggle(1000,function(){
$(p).css("background-color","green");
});
})( $(this).next(), $(this).prev() );
});
当然,您的实际回调函数可以从事件处理程序注册中分解出来:
function myClickCallback ( n, p ) {
$(n).slideToggle(1000,function(){
$(p).css("background-color","green");
});
}
//...
$(".a").click(function(eve){
myClickCallback ( $(this).next(), $(this).prev() );
});
在一些应该在其他地方产生影响的触发动作的背景下,这可能更有意义。这种行为绝不是推荐的做法 - 用户交互的非本地效果实际上违反了UI设计建议:
function myClickCallback ( n, p ) {
$(n).slideToggle(1000,function(){
$(p).css("background-color","green");
});
}
//...
$(".a").click(function(eve){
myClickCallback ( $(some_other_element).next(), $(some_other_element).prev() );
});
<强>演示强>
This fiddle包含一个具有简化回调函数的想法的PoC。