我如何处理 Jquery 中的选中事件和单击事件

发布于 2024-10-11 00:48:12 字数 699 浏览 1 评论 0原文

假设我有一个表单并加载该表单,我有 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"); }); 
    });

我正在为两组相似的事件编写相同的重复代码行。是否有任何方法可以组合“已检查”和“点击”事件 假设我这样做,那么“已检查”不会被调用,直到“已单击”为止?还有其他方法可以做到这一点吗?

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

Say I have a form and onload of that form I have 2 radio buttons say "yes" or "no "
I have set of action to perform when we select either one radio button .Say if we select "yes "

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

//for click

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

Iam Writing the same repeated lines of code for two similar set of events .Is There anyway to combine the "Checked" and "Clicked" events
Say if i do inthis way than "Checked" doesnot get called untill "Clicked"?Is there any other way to do it.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦醒时光 2024-10-18 00:48:13

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

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

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

One of the ways to achieve it is to create a function which will do all the common operations, and then call this function when event occurs.

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

and

 $("#yes").bind('click',function(){ 
     show_stuff(); 
  });
暗藏城府 2024-10-18 00:48:12

您可以使用 .bind() 组合多个事件,例如

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

您可以查找事件对象来确定实际触发了哪个事件

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

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

if( this.checked ) {
}
else {
}

要在加载站点时执行事件处理程序代码,您可以 .trigger() 它就像

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

You can combine multiple events with .bind() like

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

You can lookup the event object to determine which event actually was triggered

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

If you want to execute the exact same code for those events, you can just skip the first break statement. Anyway, in your particular case I believe you only need the change event. In your event handler you just check if the element is currently checked or not:

if( this.checked ) {
}
else {
}

To execute the eventhandlers code when loading your site, you can .trigger() it like

$('#yes').bind('click change', function(e) {
}).trigger('change');
孤蝉 2024-10-18 00:48:12
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");

希望有帮助:)

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();
}

That way you define the code once and call it multiple times :)

You could even write the alert into the function and give it the string desired:

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

And call something like processCheck("Checked on Load");

Hope that helps :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文