2016-02-05 6 views
1

мне это нужно:Использование нескольких селекторов с каждый из которых имеет различные события

$("#household").children().change(function(){ 
    alert("changed"); 
}); 

$('.ui-icon.ui-icon-closethick.delete').click(function(){ 
    alert("changed"); 
}); 

превратился в нечто вроде этого:

$("#household").children().change || $('.ui-icon.ui-icon-closethick.delete').click(function(){ 
    alert("changed"); 
}); 

Я знаю, что нижний код не является правильным, но я надеюсь, это объясняет, что я имею в виду. Я хочу, чтобы alert был выполнен, если #household.children() изменен, и нажата кнопка .ui-icon.ui-icon-closethick.delete, но без записи кода дважды.

+0

Укажите HTML/CSS, а также. jsFiddle.net будет usefu ;; – Thangaraja

ответ

5

Вы можете добиться этого, поставив общую логику в своей собственной функции, которая тогда называлась обоими событиями:

function changed() { 
    console.log('changed') 
} 

$("#household").children().change(changed); 
$('.ui-icon.ui-icon-closethick.delete').click(changed); 
+0

Хорошо, получил. На самом деле не думал об этом, но все будет хорошо. Спасибо, примет после того, как позволит время. – Dan

+1

Разве это не так, как http://stackoverflow.com/questions/34432006/combining-body-onclick-with-window-resizefunction-in-jquery Должен быть закрыт как обман? – Tushar

+1

@Tushar хорошо пункт. Я стараюсь просто отвечать на вопросы без поиска, если это не очень очевидный повтор (возврат AJAX, привязка события к динамическому и т. Д.), –

2

Объявить функцию в другом месте и передать ссылку на него в обоих обработчиков событий:

function somethingChanged() { 
    alert('changed'); 
} 

$(...).change(somethingChanged); 
$(...).click(somethingChanged); 
0

Я не думаю, что это возможно только с jquery. Вы могли бы начать так:

$("#household,.ui-icon.ui-icon-closethick.delete")... 

но потом все willbe похожи (например, оба будут иметь щелчок или OnChange)