jQuery: получите щелчок мышью если в отделении или нет

у меня есть эта страница HTML

<html>
<body>
<div>a</div>
<div>b</div>
<div>c</div>
<div>d</div>
<div id='in_or_out'>e</div>
<div>f</div>
</body>
</html>

a, b, c, d, e и f мог быть отделениями также не только простой текст.

Я хочу получить событие нажатия мыши, но как я мог знать, является ли это внутри или снаружи #in_or_out отделение?

РЕДАКТИРОВАНИЕ:: парни, я знаю, как проверить, является ли отделение щелчком или нет, но я хочу, чтобы мое событие было запущено, когда щелчок вне того отделения

15
задан trrrrrrm 15 February 2010 в 10:45
поделиться

6 ответов

$("body > div").click(function() {
    if ($(this).attr("id") == "in_or_out") {
        // inside
    } else {
        // not inside
    }
});

РЕДАКТИРОВАТЬ: только что узнал, что есть отрицание:

$("body > div:not(#in_or_out)").click(function(e) {
    // not inside
});
24
ответ дан 1 December 2019 в 00:26
поделиться

Может быть, этот вам поможет

$('body').click(function(){
    //do smth
});
$('div#in_or_out').click(function(e){
    e.stopPropagation();
    // do smth else
});
7
ответ дан 1 December 2019 в 00:26
поделиться

Как это?

$("#in_or_out").click(function() {
    alert("IN DIV!");
});
1
ответ дан 1 December 2019 в 00:26
поделиться

Если вы хотите определить, не вы щелкнули внутри или снаружи div, установите обработчик событий на documentElement и позвольте ему распространяться от других элементов вверх:

$("html").click(function (e)
{
    if (e.target == document.getElementById("in_or_out"))
        alert("In");
    else
        alert("Out!");
});
9
ответ дан 1 December 2019 в 00:26
поделиться

для внутренней части это будет

$("#in_or_out").click(function() {
    // do something here
});

для внешней... я понятия не имею.

Edit: Можно попробовать сделать то же самое для body-tag (назначить обработчик нажатия на сам документ). Но я не уверен, что при этом сработают оба события.

3
ответ дан 1 December 2019 в 00:26
поделиться

Зависит от того, что вы хотите. Если вы хотите выполнить только код, когда он был внутри #in_or_out , вы можете сделать:

$('#in_or_out').click(function(){ /* your code here */ });

У вас может быть переменная состояния, которая сообщает, находится ли мышь в #in_or_out или нет:

var inside = false;

$('#in_or_out').hover(function() { inside = true; }, function() { inside = false; });

Затем всякий раз, когда происходит щелчок, вы можете проверить с помощью внутри , был ли щелчок внутри in_or_out или нет.

Ссылка: .hover ()

Обновление:

Независимо от того, к какому элементу вы привязываете обработчик click , вы всегда можете сделать это:

$('element').click(function() {
     if ($(this).attr('id') !== 'in_or_not') {

     }
 });
4
ответ дан 1 December 2019 в 00:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: