Как мне обработать как отмеченные, так и отмеченные события в Jquery - PullRequest
1 голос
/ 05 января 2011

Скажите, что у меня есть форма и загрузка этой формы. У меня есть 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 Написание одинаковых повторяющихся строк кода для двух одинаковых наборов событий. Есть ли в любом случае возможность объединить события «Проверено» и «Нажатие» Скажитеесли я делаю так, чем «Проверено» не вызывается до «Нажатие»? Есть ли другой способ сделать это.

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

Ответы [ 3 ]

3 голосов
/ 05 января 2011

Вы можете объединить несколько событий с .bind() как

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

Вы можете посмотреть event object, чтобы определить, какое событие действительно было вызвано

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

Если вы хотите выполнить точно такой же код для этих событий, вы можете просто пропустить первый оператор break. В любом случае, в вашем конкретном случае я считаю, что вам нужно только событие change. В вашем обработчике событий вы просто проверяете, проверен ли элемент в данный момент или нет:

if( this.checked ) {
}
else {
}

Чтобы выполнить код обработчика событий при загрузке вашего сайта, вы можете .trigger() это как

$('#yes').bind('click change', function(e) {
}).trigger('change');
0 голосов
/ 05 января 2011

Один из способов добиться этого - создать функцию, которая будет выполнять все общие операции, а затем вызывать эту функцию при возникновении события.

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

и

 $("#yes").bind('click',function(){ 
     show_stuff(); 
  });
0 голосов
/ 05 января 2011
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");

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...