如何在Jquery中设置每个按钮的功能?

时间:2015-08-31 06:19:50

标签: javascript jquery html css

我正在尝试使用reverse Polish Notation制作计算器(JQuery, HTML, CSS)。

我有[0~9 NUMBER BUTTONS]和[+,-,=,/ OPERATOR BUTTONS],需要确保它们的工作方式不同。但是,我想向他们展示所有[input textbox。]

那么如何在Jquery中设置每个按钮的事件处理程序?你有什么好主意吗?我应该只使用If, else if, else ..?

$(document).ready(function() {
    $('button').click(function(){

        var showMessage = $(this).attr("value");
        console.log(showMessage);
        if(showMessage!="Clear"){ // 이어서 붙이기
             $('#showProcess').val(function(n,c){
                return c+showMessage;
            });
        }
        else if(showMessage=="Clear"){
            $('#showProcess').val(""); // Clear
        }
    });

$('button').hover( // 버튼 hover 시에 음영 설정
function(){
    $(this).addClass('active');
},
function(){
    $(this).removeClass('active');   
}
);
});

enter image description here

2 个答案:

答案 0 :(得分:5)

看起来你所做的就是为选择器'button'创建一个事件处理程序(它将选择页面上的每个按钮),然后你会检查按下了哪个按钮。这是对此的类比。这就像订购Pepporoni比萨饼一样,但比萨店的人在烹饪了各种比萨饼之后来到你家,后来问你想要哪一个。

更好的做法是只选择要添加特定事件处理程序的确切按钮。有很多方法可以做到这一点,但这是一个简单的例子。

'button.digit'选择匹配类为'digit'的每个按钮。

<button class="digit" value="5">5</button>

例如,

$('button.digit').click(function() {
    var digitPressed = parseInt($(this).attr('value'));
    // perform desired actions
    // stack.push(digitPressed);
});

$('button.operand-plus').click(function() {
    var opPressed = $(this).attr('value');
    // perform desired action for 'Plus' button
    // stack.push(opPressed);
});

当然,您也可以使用jQuery内联数据或从innerHTML中读取数字的值。

试试这个简单的例子: https://jsfiddle.net/228gp9wc/

答案 1 :(得分:2)

你可以这样做:https://msdn.microsoft.com/en-us/library/office/ff193884.aspx

示例JS代码:

<input type="button" class="btn" value="1" />
<input type="button" class="btn" value="2" />
<input type="button" class="btn" value="3" />
<input type="button" class="btn" value="4" />

示例HTML代码:

UPDATE item a, cost b
    SET a.cost = b.cost
    WHERE a.order_id = b.order_id
    AND YEAR(a.date) = b.YEAR
    AND month(a.date) = b.month
    AND hour(a.time) = b.hour