jquery mouseup + not,not working

时间:2011-12-31 22:10:29

标签: jquery jquery-selectors

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

这是我的代码,我想在mouseup上选择单词,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进行测试。

那么通过jquery保护全身鼠标中的一个div的最佳方法是什么?感谢。

2 个答案:

答案 0 :(得分:4)

由于mouseup个事件冒泡,您只需选择<div>,然后使用#protected选择性地从e.stopPropagation()过滤出事件以停止冒泡。 See 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();
});

You could cancel the selection, too.

P.S。您应该使用obj.toString()String(obj)代替new String(obj)

答案 1 :(得分:1)

另一种方式:

$(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