1

問題:非常に制限された CMS で Web サイトを構築しています。アンカーの href の特定の関数を置き換える必要があります。残念ながら、読み込まれたコンテンツは外部のものであり、このコードは機能しません。

jQuery:

$(document).ready(function() {
    $('a[href*="show_upsell_dialog"]').each(function(e){
            $(this).attr('href', $(this).attr('href').replace('show_upsell_dialog(', 'more_details_1('));
    });   
});

HTML ビット:

<a href="javascript:show_upsell_dialog(1238)">Details</a>

質問:なぜですか? どうすれば機能しますか?

4

3 に答える 3

1

$.get または $.get によって返される promise にアクセスできない場合、選択肢は非常に限られています。

別の方法は、期待されるオプションを含むリクエストが呼び出されたときにバインドを解除するグローバルな ajax コールバックを使用することです。

function completeCallback (e, xhr, options) {
    // updated
    if (options.url == "/ejax-order-step/") {
        $(e.currentTarget).off('ajaxComplete',completeCallback);
        $('a[href*="show_upsell_dialog"]').attr('href',function(href){
            return href.replace('show_upsell_dialog(', 'more_details_1(');
        });
    }
}
$(document).ajaxComplete(completeCallback);

ただし、リッスンしているリクエストが完了する前に、このコールバックを定義する必要があることに注意してください。

ただし、あなたの場合、これを行うことができない理由がわかりません:

window.show_upsell_dialog = window.more_details_1;
于 2013-07-22T14:12:15.033 に答える