#jquery
#jquery
Вопрос:
У меня есть html, например
<body><div id="main"><p>some text</p></div></div></div></body>
Как сделать в jquery, когда вы нажимаете вне #main, но внутри тела тега какое-то действие?
$(":not(#main)").click({..});
не работает
Ответ №1:
Вы пробовали это:
$("body").children().filter(":not(#main)").click(function(){...});
Комментарии:
1. Это намного лучше (чище и лаконичнее), чем мое собственное предложение … 1! =)
2. Также можно написать в одной строке $(«body>:not(#main)»).click(function(){…});
Ответ №2:
$('body').click(function(e){
//if click inside #main
if($(e.target).parents('#main').length || $(e.target).is('#main')){
...
}
else{
//if not clicked inside #main
}
})
проверьте здесь http://jsfiddle.net/gwams/1 /
Ответ №3:
Я бы предложил что-то вроде:
$('body').click(
function(e){
if ($(e.target).is('#main') || $(e.target).closest('#main').length){
// main was clicked
}
else {
// something else was clicked
}
});
Ответ №4:
Сначала вы должны изменить Html на:
<body><div id="main"><p>some text</p></div></body>
В нем есть два незакрытых тега div, и тогда ответ Дэвида должен сработать.
Ответ №5:
$('body').click(function(e) {
if (e.target.id != 'main') {
console.log('outside main but within body');
} else {
console.log('within main');
}
});
Ответ №6:
$('body').click(function () {
alert('clicked');
});
$('#main').click(function (event) {
event.stopPropagation();
});
Должен остановить щелчки внутри #main
, чтобы распространяться вниз body
.
Ответ №7:
Попробуйте $("body>:not(#main)").click(function(){...});
Изменено из samn
Если вам нужна живая версия, просто измените на
$("body>:not(#main)").live("click", function(){...});