我想知道简化这个脚本的方法,因为不知怎么的,我又重复了一遍……
$('.userprofile').click(function(){
card_profile.load(url_settings).dialog('open');
});
$('.cust-profile').click(function(){
card_profile.load(url_customer).dialog('open');
});
$('.my-profile').click(function(){
card_profile.load(url_my).dialog('open');
});
发布于 2013-07-25 17:09:05
var obj = {
'.userprofile' : url_settings,
'.cust-profile': url_customer,
'.my-profile' : url_my
};
$.each(obj, function(sel, url) {
$(sel).click(function(){
card_profile.load(url).dialog('open');
});
});
或
$(".userprofile,.cust-profile,.my-profile").click(function() {
var url = $(this).hasClass("userprofile") ? url_settings :
$(this).hasClass("cust-profile") ? url_customer :
url_my;
card_profile.load(url).dialog("open");
});
发布于 2013-07-25 17:04:24
这样做的一种方法是迭代一个(或两个)字符串数组。
编辑:在for循环之外声明的i
,以解决@Crazy序列中的注释
arr = ['user', 'cust', 'my'];
url_arr = [urlA, urlB, urlC];
var i;
for (i in arr){
$('.' + arr[i] + '-profile').click(function(){
card_profile.load(url_arr[i]).dialog('open');
});
}
发布于 2013-07-25 17:05:05
这稍微好一些,但你不能获得显著的收益--我想:
$('.userprofile').data('url',url_settings);
$('.cust-profile').data('url',url_customer);
$('.my-profile').data('url',url_my);
$('.userprofile, .cust-profile, .my-profile').click(function(){
card_profile.load($(this).data('url')).dialog('open');
});
如果为每个按钮分配URL,则不必重复这些类:
$('button').click(function(){
card_profile.load($(this).data('url')).dialog('open');
});
https://stackoverflow.com/questions/17864188
复制相似问题