2010-10-25 53 views
15

使用Jquery有沒有一種方法來突出顯示/選擇(如果有人要用鼠標選中它)我點擊的div內的文本?不是一個文本框,只是一個普通的div。Jquery:當點擊它時,是否有突出顯示Div文本的方法?

我試圖做一個'短網址'框,當有人點擊textarea時,它突出顯示所有文本,但它也需要不允許人們改變文本框中的文本,但是當文本框被禁用,你不能選擇任何文本,所以我試圖做到這一點,我只是覺得div是最簡單的。

抱歉,我並沒有很好地解釋我的意思,補充說明。

+0

沒有發現任何東西在我平時的搜索,你能不能樣式的輸入框,看起來像你的DIV? – 2010-10-25 08:12:14

+0

你能解釋一下你爲什麼要這樣做嗎?你只是想改變背景顏色或選擇文本以允許複製。 – 2010-10-25 08:17:18

+0

好吧,我試圖做一個'短網址'框,當有人點擊textarea時,它突出顯示所有文本,但它也需要不允許人們改變文本框中的文本,但是當一個文本框被禁用,你不能選擇任何文本,所以我試圖做到這一點,我只是覺得div是最簡單的。 – 2010-10-25 08:18:29

回答

15

對,這不是關於背景顏色,而是關於選擇文本。

首先設置的輸入爲只讀,阻止人們改變值:

<input type="text" readonly="readonly" value="ABC" /> 

然後使用jQuery(或類似)選擇的文本一旦它被點擊:

$('input').click(function() { 
    $(this).select(); 
}); 

你應該風格這個輸入如你所見,或許可以讓它看起來像是一個普通的文字,take a look at this jsFiddle作進一步的演示。

2

您可以修改元素被點擊後的CSS。喜歡的東西(未經測試):

$(".el").click(function() { 

    $(".el").css("color", "red").css("background-color", "yellow"); 

}); 
+3

雖然作者說「突出顯示」,但我懷疑他想選擇文本以允許某人將整段文本複製到剪貼板。 – 2010-10-25 08:11:37

+0

好點,在這種情況下,馬克B的答案是更多的東西 – 2010-10-25 08:18:27

2
$("div.myDiv").click(function() { 
    $(this).css("background-color", "yellow"); 
}) 

或者你可以添加一個類:

$("div.myDiv").click(function() { 
    if($(this).hasClass("highlited")) { 
     $(this).removeClass("highlited"); 
    } else { 
     $(this).addClass("highlited"); 
    } 
} 
0

Working demo

如果只講點擊任何DIV中不選擇。這將是這樣的:

$("div").click(function() 
      { 
       $(this).css({"background":"yellow"}); 
      }); 
0

爲什麼不使用CSS:

div.<someclass>:focus { 
    background:yellow; 
} 
1

這裏有一個快速和骯髒的jQuery少的代碼片段我放在一起前段時間:

/* 
* Creates a selection around the node 
*/ 
function selectNode(myNode){ 
    // Create a range 
    try{ // FF 
     var myRange = document.createRange(); 
    }catch(e){ 
     try{ // IE 
      var myRange = document.body.createTextRange(); 
     }catch(e){ 
      return; 
     } 
    } 

    // Asign text to range 
    try{ // FF 
     myRange.selectNode(myNode); 
    }catch(e){ 
     try{ // IE 
      myRange.moveToElementText(myNode); 
     }catch(e){ 
      return; 
     } 
    } 

    // Select the range 
    try{ // FF 
     var mySelection = window.getSelection(); 
     mySelection.removeAllRanges(); // Undo current selection 
     mySelection.addRange(myRange); 
    }catch(e){ 
     try{ // IE 
      myRange.select(); 
     }catch(e){ 
      return; 
     } 
    } 
} 

它可能使用了大量的改進(我特別討厭多如牛毛的嘗試...抓塊),但這是一個很好的起點。對於「節點」,我是指DOM樹中的一個項目。

2

您可以使用一個文本,而是將其禁用,使用「只讀」屬性

<textarea name="selectable" readonly="readonly" />