2012-11-30 6 views
2

У меня есть два комплекта флажка. Один для категорий и один для продуктов.Нужно иметь отдельное событие click для двух разных наборов флажков с помощью jquery.

Для Категории у меня есть этот

<div id="category"> 
    <input type="checkbox" id="cateogry1"> 
    <input type="checkbox" id="cateogry2"> 
    <input type="checkbox" id="cateogry3"> 
</div> 

Для Продукты у меня есть этот

<div id="product"> 
    <input type="checkbox" id="product1"> 
    <input type="checkbox" id="product2"> 
    <input type="checkbox" id="product3"> 
</div> 

Что я сделал первоначально петельный через каждый флажок и зарегистрировал событие щелчка для всех, как это

$("input:checkbox").each(function(){ 
    var localCheckboxId = '#'+$(this).attr('id'); 
    $(localCheckboxId).click(function() { 
    //did something 
    }); 
}); 

Теперь я хочу отделить события click для обеих категорий и продуктов.

Как это сделать с помощью jquery?

ответ

3

Вы можете использовать селектор JQuery, как это:

$("#category input").click(categoryFunction); 

и так:

$("#product input").click(productFunction); 

Что происходит, что выбор первых ограничивает выбор будет основан на ID каждого div. Таким образом, часть input означает «только входные потомки, принадлежащие родительскому идентификатору»

Поскольку у вас есть только элементы ввода флажка, нет необходимости указывать тип. Однако, если вы на самом деле использовать больше типов ввода, то вы можете добавить дополнительную :checkbox части для дальнейшего ограничения выбора:

$("#category input:checkbox").click(categoryFunction); 

Here is a working example, он даже показывает, как получить id для флажка, который щелкнул.

+0

ou mean '$ (" # category input: checkbox "). each (function() {});'? будут ли эти петли все флажки категории? –

+0

@Coder_sLaY: Вам не нужно использовать цикл. Секунды JQuery можно использовать, подумайте об этом и примените событие 'click' ко всем согласованным элементам. Попробуйте, он будет работать – musefan

+0

@Coder_sLaY: см. Мое редактирование, я опубликовал ссылку JSFiddle, чтобы вы могли видеть ее работу – musefan

5

Используйте содержащий div ID:

продукты:

$("#product input:checkbox").click(... 

Категории

$("#category input:checkbox").click(... 
+0

Вы имеете в виду '$ (" # product input: checkbox ") .each (функция() {}); '? –

+2

@Coder_sLaY Нет, вам не нужно проходить через них. Это будет несколько лишним. – MrCode

+0

Нет (вам не нужно «каждый»), этот метод будет выбирать флажок каждого входа типа по продукту или категории и применять к ним указанное релевантное событие клика. –

0

Вы можете оставить свой цикл, но добавить тест на input родителя:

if($(this).parent().attr('id') === "category") { ... } 
else { ... }