2013-08-30 6 views
0

У меня есть элемент div с некоторым текстом в нем. Мне нужно, чтобы иметь возможность выбрать: 1. сам DIV и 2. только текст внутри этого DIVВыделение текста в div

<div class="myDiv">some text</div> 

Так я в состоянии выбрать DIV, по имени класса

$(".myDiv").hover(...); 

Но я У меня трудности с текстом. Пробовал следующие

$(".myDiv").contents().eq(0).text().hover(...); 

но не повезло. Кроме того, когда я навешиваю текст, мне нужно выбрать только этот текст, а не родительский div.

enter image description here

+0

и что о простых '$ (" bHdr"). Текст()'? – Cherniv

+0

Почему '.hover()'? – Sergio

+0

Что значит «выбрать»? выбор элемента с помощью jquery не совпадает с выбором текста с помощью мыши. Кроме того, пытаетесь ли вы привязать обработчик события hover к фактическому тексту? – cernunnos

ответ

1

DEMO

Попробуйте

Я думаю, это то, что вам нужно

(function findTextNodes(current, callback) { 
    for(var i = current.childNodes.length; i--;){ 
     var child = current.childNodes[i]; 
     if(3 === child.nodeType) 
      callback(child); 
     findTextNodes(child, callback); 
    } 
})(document.getElementById('myDiv'), function(textNode){ 
    $(textNode).replaceWith('<span class="textNode">' + textNode.nodeValue + '</span>'); 
}); 

$('.textNode').hover(function(){ 

    $(this).css('color', 'white'); 
},function(){ 
    $(this).css('color', 'black'); 
}); 
+0

Спасибо, это похоже на трюк! – santa

+0

добро пожаловать – SarathSprakash

+0

О, извините. Я не понимал, что я не могу выбрать div как это ... Он просто получает текст. Мне нужно иметь возможность выбирать текст только при перемещении по тексту. Если это над div, он должен выбрать div. Как мне совместить эти два? – santa

3

Все, что вам нужно нужно следующее:

var txt = $('.myDiv').text(); 
+0

Я тоже связал это. Когда я навешиваю текст, мне нужно выбрать только этот текст, а не родительский div. – santa

+0

@santa - Я не понимаю, что вы подразумеваете под «выбором», я думаю. Код выше получает текст внутри div, а не сам div –

0
var html= $('.myDiv').html(); // Select div itself 
var text= $('.myDiv').text(); // To get only the text 
0

Если вы пытаетесь добавить текст попробовать:

$(".myDiv").contents().eq(0).innerHTML('YOUR TEXT HERE').hover(...);

+0

И 'innerHTML', и' .html' одинаковы !! – Praveen

+0

Хотя я не уверен, для чего этот раздел предназначен для: '.contents(). Eq (0)' Простое и простое добавление HTML/текста внутри div, которое вы можете использовать: '$ (" .bHdr "). InnerHTML (' YOUT TEXT '); ': D –

+0

@ user1671639 Вместо этого измените ответ .html заменит Div вашим html, а innerHTML будет« менее нахмуренным apon »XD –

Смежные вопросы