Как я могу прикрепить некоторые jQuery к функции, которая уже существует? - PullRequest
4 голосов
/ 09 августа 2010

У меня есть следующая наценка:

    <dt>

        <input id="p_method_checkmo" value="checkmo" type="radio" name="payment[method]" title="Check / Money order" onclick="payment.switchMethod('checkmo')" class="radio" />
        <label for="p_method_checkmo">Check / Money order </label>
</dt>
    <dt>
        <input id="p_method_ccsave" value="ccsave" type="radio" name="payment[method]" title="Credit Card (saved)" onclick="payment.switchMethod('ccsave')" class="radio" />
        <label for="p_method_ccsave">Credit Card (saved) </label>
</dt>

Мне нужно включить jQuery в события click (или change). После многих отладок я обнаружил, что встроенное событие onclick переопределено и селекторы jQuery, которые я пытаюсь использовать. Есть ли способ подключить JQuery для запуска всякий раз, когда этот метод (payment.switchMethod) запущен? Я думал о том, чтобы использовать protectDefault (), чтобы остановить событие click для готового документа, но я не уверен, является ли это хорошей идеей или лучшим способом достижения цели.

I НЕ МОЖЕТ редактировать пометку любым способом, к сожалению.

Любой совет очень ценится. Я приложил jQuery ниже для справки:

    // Check for payment selection.  Upon selection mark it as 'hitpayment' in db
jQuery("input[name=payment\\[method\\]]:radio").change(function(){
    alert('hello');
    var cartPalPayment = {};

    cartPalPayment['user_id'] = '<?=$_SESSION['user_id']?>';
    cartPalPayment['referer'] = '<?=$_SESSION['referer']?>';
    cartPalPayment['license_key'] = cartPalLicenseKey;

    jQuery.ajax({
            url: 'integration/magento1.4/set_payment.php',
        cache: false,
            dataType: 'jsonp',
        data: cartPalPayment
        });
});

Ответы [ 2 ]

3 голосов
/ 09 августа 2010

Хорошо, похоже, вам также нужно запустить оригинальную функцию.Просто замените (переопределите) функцию payment.switchMethod на свою собственную и вызовите ее из новой функции:

var evilFunction = payment.switchMethod;
// Ninja-swap payment.switchMethod() with your own.
payment.switchMethod = function(evilArgs) {
   // Do whatever you want here
   alert("Got your nose");

   // Call original function
   evilFunction(evilArgs);
};

Просто запустите вышеуказанное при загрузке документа (или в любое время ПОСЛЕ payment.switchMethod)был определен).Вы эффективно внедряете свой собственный код в payment.switchMethod, поэтому вам даже не нужно прикреплять прослушиватели событий к элементу.

1 голос
/ 09 августа 2010

Понятия не имею, сработает ли это, но вы можете попробовать.

jQuery("input[name=payment\\[method\\]]:radio").unbind('click');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...