4

$(this)jQueryの別の関数に渡す方法はありますか?

これは私が持っているものですが、機能しません:

$(function() {

  $('[id$=price]').change(function() {
    var price = $(this).val();
    var quantity = $(this).closest('.fields').find('[id$=quantity]').val();     
    recalculate_subtotal($(this));
  });

  $('[id$=quantity]').change(function() {
    var quantity = $(this).val();
    var price = $(this).closest('.fields').find('[id$=price]').val();           
    recalculate_subtotal($(this));      
  });

  function recalculate_subtotal(element) {
    $(element).closest('.fields').find('#Subtotal').val(price * quantity);      
  }

});

(最後の関数は、$(this)を取得したい関数です。)

助けと謝罪をありがとう。jQueryは初めてです!

4

5 に答える 5

16

これ問題なく機能しますが、jQueryオブジェクト($(this))を渡す場合は、次のように再度ラップする必要がないことに注意して$()ください。

$('[id$=price]').change(function() {
    var price = $(this).val();
    var quantity = $(this).closest('.fields').find('[id$=quantity]').val();     
    recalculate_subtotal($(this));
})


function recalculate_subtotal($element) {
    $element.closest('.fields').find('#Subtotal').val(price * quantity);      
}
于 2012-09-21T15:31:27.950 に答える
2

もうすぐです-要素変数の周りの$()を取り除きます:

function recalculate_subtotal(element) {
    element.closest('.fields').find('#Subtotal').val(price * quantity);      
}
于 2012-09-21T15:31:45.957 に答える
1

これを試して、

$.fn.recalculate_subtotal = function () {
    element = $(this);   // you will get $(this) here
    $(element).closest('.fields').find('#Subtotal').val(price * quantity);      
}

$('#AnyElement').recalculate_subtotal(){
});    
于 2012-09-21T15:32:09.343 に答える
1

すでに$(this)を渡しているので、これを変更する必要があります。

function recalculate_subtotal(element) {
    element.closest('.fields').find('#Subtotal').val(price * quantity);      
}
于 2012-09-21T15:32:14.100 に答える
1

すでにjQueryオブジェクトセレクターを関数に渡しているので、要素の周りに$()は必要ありません。これで十分です。

function recalculate_subtotal(element) {
    element.closest('.fields').find('#Subtotal').val(price * quantity);      
} 
于 2012-09-21T15:35:12.110 に答える