jquery mouseup + нет, не работает - PullRequest
0 голосов
/ 01 января 2012

http://jsfiddle.net/xQKNh/6/

Вот мой код, я хочу выделить слова при наведении мыши, кроме некоторых div на id.

Я пробовал:

$("body:not(#protect)").mouseup(function() {

$("body").not("#protect").mouseup(function() {

$("body:not('#protect')").mouseup(function() {

Но not.selection не работает для $('body').mouseup.

BTW, вмоя главная страница, область выбора не только div#content-area, просто для вопроса, я оставил один div для теста.

Так как же наилучшим способом защитить один div из мышки всего тела с помощью jquery?Спасибо.

Ответы [ 2 ]

4 голосов
/ 01 января 2012

Поскольку пузырьки событий mouseup, вы можете просто выбрать <div>, а затем выборочно отфильтровать события из #protected, используя e.stopPropagation(), чтобы остановить пузырьки. См. JsFiddle.

$("#content-area").mouseup(function() {
    var selection = getSelected();
    if(selection && (selection = selection.toString().replace(/^\s+|\s+$/g, ''))) {
        $('#show-text').html(selection)
    }
});

$("#protect").mouseup(function(e) {
    e.stopPropagation();
});

Вы также можете отменить выбор.

P.S. Вы должны использовать obj.toString() или String(obj) вместо new String(obj).

1 голос
/ 01 января 2012

Другой способ:

$(document).ready(function() {
    $("body").mouseup(function(e) {
        if (e.target.id != 'protect') {
            var selection = getSelected();
            if(selection && (selection = new String(selection).replace(/^\s+|\s+$/g,''))) {
            $('#show-text').html(selection)
        }
    }
  });
});

FIDDLE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...