2013-12-10 79 views
0

我有動態創建的按鈕和其他元素。基於ID的JQuery執行功能

<input name="qbut" type="button" id="qbut" value="Go" /> 

<input name="qbut1" type="button" id="qbut1" value="Go" /> 

<input name="qbut2" type="button" id="qbut2" value="Go" /> 

這裏是做什麼的功能時#qbut按鈕被點擊:

$(document).ready(function() { 
    $("#qbut").click(function() { 
     var qvendor = $("#qvendor").val(); 
     var qmiles = $("#qmiles").val(); 
     var qtaxes = $("#qtaxes").val(); 
     var qprice = $("#qprice").val(); 
     var qqty = $("#qqty").val(); 
     var qprofit = qprice * qqty - qprice * qqty * 3.2/100 
      - qtaxes - qmiles * qvendor/100000; 
     var qamex = qprice * qqty * 3.2/100; 
     var qgross = qprice * qqty ; 
     var fqprofit = formatDollar(qprofit); 
     var fqamex = formatDollar(qamex); 
     var fqgross = formatDollar(qgross); 

     $('#qgross').val(fqgross); 
     $('#qamex').val(fqamex); 
     $('#qprofit').val(fqprofit); 
    }); 
}); 

如何使每一組相同功能的工作?

例如: 當按下#qbut1它適用於:

$("#qbut1").click(function() { 
    var qvendor = $("#qvendor1").val(); 

    // etc. 
}); 

基本上我需要從按鈕ID元件的數量可變,並應用該變量在功能用於選擇相應的元件。

回答

1

OK,我想通過將2個答案這應該工作:

<input class="myButton" name="qbut" type="button" id="qbut" value="Go" /> 

$(".myButton").click(function() { 
    extractedString = $(this).prop('id').replace (/[^\d.]/g, ''); 
alert('integeris extracted : ' + extractedString); 

}); 
0

我認爲,你將需要使用一個類掛鉤的事件是這樣的:

<input class="myButton" name="qbut" type="button" id="qbut" value="Go" /> 

<input class="myButton" name="qbut1" type="button" id="qbut1" value="Go" /> 

<input class="myButton" name="qbut2" type="button" id="qbut2" value="Go" /> 

,然後在JQuery的,你可以去,如:

$(".myButton").click(function() { 
var qvendor = $("#qvendor").val(); 
} 
0

嘗試這樣的:演示http://jsfiddle.net/EAwbD/click second button

所以想法是提取數出字符串和+它的qvendor對象:

樣品extractedString = whateeverid.replace (/[^\d.]/g, '');

我想休息應該適合需要:)

$("#qbut1").click(function() { 
     extractedString = $(this).prop('id').replace (/[^\d.]/g, ''); 
     var qvendor = $("#qvendor" + extractedString ).val(); 

}); 

​​
+0

這樣做的問題是,我不希望創建一個單獨的函數爲每個按鈕。所以我需要腳本來爲當前設置進行數學運算,然後按下該組的對接。 –

0

使用一個類來代替IDS爲按鈕並分配點擊手柄呃在更高層次的元素上使用.on。

要麼使用數據的類(將分組類設置爲按鈕上的數據元素),要麼將id後綴設置爲按鈕E.g上的數據項。 (你只需要或者數據QCLASS或數據qnum這取決於你使用)

<input class="qbutton" data-qclass="q0" data-qnum="" name="qbut" type="button" id="qbut" value="Go" /> 

<input class="qbutton" data-qclass="q1" data-qnum="1" name="qbut1" type="button" id="qbut1" value="Go" /> 

<input class="qbutton" data-qclass="q2" data-qnum="2" name="qbut2" type="button" id="qbut2" value="Go" /> 

與相應的JavaScript

$(document).ready(function() { 
    $(document).on(".qbutton", 'click', function() { 

     // Using ids for fetching the data 
     var q_num = $(this).data('qnum'); 
     var qvendor = $("#qvendor" + q_num).val(); 
     var qmiles = $("#qmiles" + q_num).val(); 

     // Alternative use classes 
     var all_data_items = $('.' + $(this).data('qclass')); 
     var qvendor = $(".qvendor", all_data_items).val(); 
     var qmiles = $(".qmiles", all_data_items).val(); 


    }); 
}); 

你可以做到這一點負全部基於IDS(你還需要一個共同的類分配點擊事件,但沒有數據元素),但我認爲使用數據更清晰。但是,對於基於id的變體,請使用javascript

$(document).ready(function() { 
    $(document).on(".qbutton", 'click', function() { 

     // Fetch the rest of the id of the button to use as a suffix for the data element ids 
     var q_num = $(this).attr('id').replace(/qbut/, ''); 

     // Fetch data 
     var qvendor = $("#qvendor" + q_num).val(); 
     var qmiles = $("#qmiles" + q_num).val(); 


    }); 
}); 

警告:未經測試,但應該可以工作!

+0

使用.on使用點擊處理程序的良好通話。我已經在事實後認識到了這一點:) –