2011-12-31 77 views
0

http://jsfiddle.net/xQKNh/6/jQuery的鼠標鬆開+不,不工作

這裏是我的代碼,我想在鼠標鬆開選擇的話,除了一些div通過id

我曾嘗試:

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

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

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

not.selection不工作爲$('body').mouseup

順便說一句,在我的主頁,選擇區不僅div#content-area,只是爲了這個問題,我留下了一個div進行測試。

那麼什麼是最好的方法來保護一個div jQuery的全身mouseup?謝謝。

回答

4

由於mouseup事件泡沫,你可以選擇<div>然後選擇性地使用e.stopPropagation()停止冒泡從#protected過濾掉的事件。 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.

附:您應該使用obj.toString()String(obj)而不是new String(obj)

+0

等有很大的幫助。非常感謝你。現在我應該和我的朋友一起出去。新年快樂。 – 2011-12-31 22:27:24

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

+0

沒有足夠的jQuery,你應該使用'!$(e.target).is(「#protect」)'。 -1(開個玩笑) – Ryan 2011-12-31 22:30:03