如何在Jquery中处理已检查和单击的事件

时间:2011-01-04 21:50:55

标签: jquery jquery-ui jquery-selectors

假设我有一个表格和上传表单我有2个单选按钮说“是”或“否” 当我们选择一个单选按钮时,我有一组动作要执行。如果我们选择“是”

,请选择
//Onload of Form 
if(("#yes:checked")){
$("#table").show();
$("#div1").show();
$("#div2").show();
alert("Checkedd on Load");
}

//单击

$("#yes").bind('click',function(){ 
    $("#table").show(); 
    $("#div1").show(); 
    $("#div2").show(); 
    alert("Checked by  Click"); }); 
    });

Iam为两组相似的事件编写相同的重复代码行。无论如何要结合“Checked”和“Clicked”事件 如果我这样做,比“Checked”不会被调用直到“Clicked”?还有其他方法可以做到。

$("#yes").bind('click',function(){
if(("#yes:checked")){
$("#table").show();
$("#div1").show();
$("#div2").show();
alert("Checked by  Click");
}
});
});

3 个答案:

答案 0 :(得分:3)

您可以将多个事件与.bind()结合起来,例如

$('#yes').bind('click change', function(e) {
});

您可以查找event object以确定实际触发了哪个事件

switch(e.type) {
   case 'click': {
       break;
   }
   case 'change': {
       break;
   }
}

如果要为这些事件执行完全相同的代码,则可以跳过第一个break语句。无论如何,在您的特定情况下,我相信您只需要change事件。在您的事件处理程序中,您只需检查当前是否检查过该元素:

if( this.checked ) {
}
else {
}

要在加载网站时执行eventhandler代码,您可以.trigger()喜欢

$('#yes').bind('click change', function(e) {
}).trigger('change');

答案 1 :(得分:0)

if(("#yes:checked")){
    processCheck();
    alert("Checked on Load");
}
$("#yes").bind('click',function(){ 
    processCheck()
    alert("Checked by  Click"); }); 
});

function processCheck() {
    $("#table").show();
    $("#div1").show();
    $("#div2").show();
}

这样你就可以定义一次代码并多次调用它:)

您甚至可以将警报写入函数并为其提供所需的字符串:

function processCheck(msgStr) {
    $("#table").show();
    $("#div1").show();
    $("#div2").show();
    alert(msgStr);
}

并调用类似processCheck("Checked on Load");

的内容

希望有所帮助:)

答案 2 :(得分:0)

实现它的方法之一是创建一个将执行所有常见操作的函数,然后在事件发生时调用此函数。

function show_stuff() {
  $("#table").show();
  $("#div1").show();
  $("#div2").show();
  alert("Checked by  Click");
}

 $("#yes").bind('click',function(){ 
     show_stuff(); 
  });