使用封閉合並事件對象和元素成一個單一的參數列表:
$(".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與簡化的回調函數。
它是'參數'還是'元素'? –
你試圖解決什麼問題?有沒有什麼不起作用,或者至少設計得不好? – Amit
不,一切正常。只是想要一個更好的設計 – nito