JQuery привязки при нажатии, когда не выделены

0

Можно ли реагировать на клик только тогда, когда пользователь не выделяет текст, подобный facebook, в окнах чата?

$("#wrapper").on("click", '.content', $.proxy(function(e) {
// if ($(e.currentTarget).isHighlighted()) return false;
}, this));
  • 0
    Это аналогичный вопрос для вас? stackoverflow.com/questions/9065828/...
  • 0
    Это не очень хорошо работает. Смотрите комментарий к ответу.
Теги:

2 ответа

2
Лучший ответ

Внутри вашего обработчика click вы можете проверить, есть ли у документа какой-либо выбор:

$("#wrapper").on("click", function() {
    if(!document.getSelection().toString().length) {
        console.log("No selection made");
    }
});

Вот сценарий вышесказанного.

Если вам нужно, чтобы он работал в IE8, вам нужно будет использовать document.selection.

  • 0
    Благодарю. Работает ли getSelection () во всех браузерах?
  • 0
    @ Крис Все, кроме <= IE8. Для этого вам нужно использовать document.selection
Показать ещё 1 комментарий
2

Да, это возможно.

Вы можете использовать API выбора и заботиться о совместимости между браузерами.

$("#wrapper").on("click", '.content', $.proxy(function(e) {
  var selection = window.getSelection();
  if (selection && selection.containsNode(e.target)) {//selection contains event target
    return false;
  }
}, this));

Чтобы быть более точным, вы можете проверить, является ли focusNode или anchorNode целью события.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню