2013-09-13 3 views
2

У меня есть следующий HTMLJQuery, по щелчку везде внутри DIV, за исключением определенного ребенка

<div id="parent"> 
    <div id="window"><!-- contents of window ---></div> 
</div> 

Родитель ширина 100% с отступом сверху и снизу и окном центрируется внутри него с шириной 600px.

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

ответ

3

Проверьте, если цель имеет идентификатор родителю

$('#parent').on('click', function (e) { 
    if (e.target.id == "parent") { 
     //code for clicking outside window but inside parent 
    } 
}); 

DEMO

+0

Спасибо, мои потребности слегка изменены, так как я задал этот вопрос, но это зачатки работоспособного ответа и идеально подходит для оригинальных требований. – user1354269

+0

Будет ли это работать, если у вас есть родной брат '# window'? – Jashwant

+0

Я думаю, что это было бы, но я не могу проверить сейчас, так как im на телефоне: p @Jashwant – Anton

2

Вы можете привязать обработчик кликов к #parent, а затем предотвратить распространение кликов с #window. Это позволяет вам иметь дополнительный вложенный контент внутри #parent без беспорядка со списками целевых объектов.

$("#window").on("click", function(e) { 
    e.stopPropagation(); 
}); 
$("#parent").on("click", function(e) { 
    // Do your thing 
}); 

Смотрите демо здесь: http://jsfiddle.net/4kGJX/

+1

Немного лучшая версия [здесь] (http://jsfiddle.net/3Cu28/3/) – Jashwant

0

вы можете попробовать этот способ

$('#parent').not("#window").on('click', function (e) { 
    //do stuff 
}); 
+0

Результат селектора '# parent' никогда не будет содержать' # window', поэтому ваш фильтр '.not()' не будет иметь эффект. – nullability

+0

'not' не является дочерним, а является функцией' filter'. Это собирается фильтровать все элементы с id 'window' из коллекции, выбранной' $ ('# parent') ' – Jashwant

Смежные вопросы