0

どういうわけか私は何度も何度も繰り返しているので、このスクリプトを単純化する方法を考えていました...

$('.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');
});
4

10 に答える 10

1

これを行う 1 つの方法は、文字列の配列 (または 2 つ) を反復処理することです。

編集:i@crazytrainからのコメントに対処するためにforループの外側で宣言

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-25T17:04:24.780 に答える
1

これは多少良いですが、私が推測する大きな利益は得られません:

$('.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');
});
于 2013-07-25T17:05:05.840 に答える
0

ここでリングに別の帽子を投げます...

var links = [{profile: '.userprofile', url: url_settings, clickDialog: 'open'},
             {profile: '.cust-profile', url: url_customer, clickDialog: 'open'},
             {profile: '.my-profile', url: url_my, clickDialog: 'open'}];

function clickOpen(url,value) {
    card_profile.load(url).dialog(value);
}

links.forEach(function(element) { $(element.profile).click(
clickOpen(element.url,element.clickDialog) });
于 2013-07-25T17:43:37.163 に答える
0

関数を使用すると少し良くなります:

$('.userprofile').click(function(){
    loadDiag(url_settings);
});
$('.cust-profile').click(function(){
    loadDiag(url_customer);
});
$('.my-profile').click(function(){
    loadDiag(url_my);
});

function loadDiag(url){
    card_profile.load(url).dialog('open');
}

switchパラメータを使用して、クリックごとに複数のことを行うこともできます

于 2013-07-25T17:07:12.260 に答える
0

各要素に url 属性を割り当てます。次に、その値を取得して、この方法でコードで使用できます。

$('.userprofile').attr('url',url_settings);
$('.cust-profile').attr('url',url_customer);
$('.my-profile').attr('url',url_my);
$('.my-profile, .userprofile, .cust-profile').click(function(){
    var url = $(this).attr('url');
    card_profile.load(url).dialog('open');
});
于 2013-07-25T17:07:47.940 に答える