2012-09-21 95 views
1

有沒有辦法將$(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);  
    } 

}); 

感謝您的任何幫助和道歉。我是jQuery的新手!

+1

這看起來不錯,真的不應該。你有錯誤嗎? – BLSully

回答

10

做工精細,雖然一個theing需要注意的是,如果你傳遞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);  
} 
+2

我也傾向於用'$'開頭來命名包含jQuery集合的變量,如'$ element'中所示。我認爲它有幫助。 –

+0

是的 - 這是一個整潔的命名約定。 –

+0

@ExplosionPills - 我完全同意。我所有的jQuery變量都帶有前綴$。 – Jamiec

1

你快有 - 擺脫$的()你的元素可變各地:

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

試試這個,

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

$('#AnyElement').recalculate_subtotal(){ 
});  
1

既然你已經通過$(本),你只需要改變這一點:

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

因爲你是jQuery對象選擇已經傳遞給你的函數,你不需要$()的元素周圍。 。應該這樣做

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

非常感謝!作品! – Tintin81

相關問題