2013-12-10 75 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使用点击处理程序的良好通话。我已经在事实后认识到了这一点:) –