Обнаружение щелчка вне элемента (с рамками) - PullRequest
2 голосов
/ 09 августа 2011

У меня есть главная страница (main.html), которая открывает страницу iframe (iframe.html). Iframe добавляется в виде своего рода окна с расширенными настройками в main.html. Теперь в этом iframe.html естьэлемент div "myDiv", и мне нужно обнаружить щелчок за пределами этого элемента myDiv ..

Сценарий написан внутри JS с именем iframe.html

Я уже пробовал несколько вещей (связываниесобытие для документирования и удаления из myDiv), но это не работает ..

$(document).click(function() {
  //your code here
});

$("#myDiv").unbind("click");

Я не уверен, что этому вопросу нужно что-то делать из-за iframe ...

Пожалуйста, помогите мне.Спасибо.

Ответы [ 3 ]

1 голос
/ 09 августа 2011

Вы пробовали что-то подобное? Он прослушивает все клики в документе, но запускает ваш код только в том случае, если целью события не является элемент myDiv. Таким образом, вы можете определить, был ли клик вне элемента myDiv или нет .... Я использовал jQuery:

// assign a document listener $(document).click(function(e){</p> <pre><code>if( $(e.target).attr('id') != "myDiv" ) { // execute your code here alert( e.target ); } }); // assign an element listener $('#myDiv').live('click',function(){alert("clicked on myDiv")});

Это также позволяет вам назначить определенный код для элемента myDiv, который будет выполнен, если пользователь щелкнет непосредственно по элементу myDiv ...

0 голосов
/ 09 августа 2011

Это процедура "флаг и игнорирование", о которой я говорил. Я надеюсь, что для этого есть нативный метод jQuery, потому что использование таких флагов - грязный хак IMO

var myDiv = false;
$(document).click(function() {
  if (!myDiv) {
    // your code here
  }
  myDiv = false;
});

$("#myDiv").click(function(e){
  myDiv = true;
  return false; // don't know if returning false will stop propagation in jQuery
});
0 голосов
/ 09 августа 2011

Я думаю, что вы хотите скрыть myDiv, если вы нажмете за его пределами, попробуйте это.

$(document).click(function() {
  $("#myDiv").hide();
});

$("#myDiv").click(function(e){
  e.stopPropagation();
});
...