2015-10-06 2 views
4

У меня есть div, который скопирован из другого места, и мне нужно изменить одно слово в нем. Это HTML:JQuery - Как заменить одно слово в div?

<div class="dealer-addy"> 
    8726 N. Royal Ln<br> 
    Irving, TX 75063<br> 
    [email protected] 
</div> 

мне нужно изменить адрес электронной почты, так что я пытаюсь получить текст внутри DIV и разбить строку на слова, а затем изменить адрес электронной почты. Тем не менее, мне трудно работать с внутренним текстом.

Это мой сценарий:

var address = $dealerInfo.find(".dealer-addy"); 
var text = $(address).text(); 
text = text.replace(/\r?\n|\r/, " "); 
var words = $(text).split(" "); 

Он ломится на раскол(), так что я добавил строку заменить(), и теперь он распадается на линии заменить(). Я предполагаю, что он ломается из-за разрыва строки в «тексте», но я не уверен, что делать.

+2

Может быть, это лучше, чтобы добавить электронную почту, чтобы охватить элемент? А потом измените его содержание? – optic

+0

Метод 'splice()' также может быть вам полезен и здесь. Но просто поместить электронную почту в свой собственный контейнер (динамически) выполнит трюк 'wrap()'. –

ответ

4

var text = $(".dealer-addy").text(); 
 

 
function extractEmails (text){ 
 
    return text.match(/([a-zA-Z0-9._-][email protected][a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi) ; 
 
} 
 

 
var email = extractEmails(text); 
 
var value = $(".dealer-addy").text(); 
 

 
value = value.replace(email, "[email protected]"); 
 
$(".dealer-addy").text(value);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
 
<div class="dealer-addy"> 
 
    8726 N. Royal Ln<br> 
 
    Irving, TX 75063<br> 
 
    [email protected] 
 
</div>

Вот демо: http://jsfiddle.net/VS7Qe/166/

+0

, если вы хотите использовать регулярное выражение: http://emailregex.com/ – optic

+0

отлично! благодаря! –

+0

Добро пожаловать! – user1012181

0

Вы можете сделать что-то вроде этого:

Javascript:

var orignalstring = document.getElementById("dealer-addy").innerHTML; 
var newstring = orignalstring.replace("[email protected]","replaced"); 
document.getElementById("dealer-addy").innerHTML = newstring; 

Html:

<div id="dealer-addy"> 
    8726 N. Royal Ln<br> 
    Irving, TX 75063<br> 
    [email protected] 
</div> 

Но если вы не знаете, что адрес электронной почты, вы пытаться заменить, вам может быть лучше:

Html:

<div class="dealer-addy"> 
    8726 N. Royal Ln<br> 
    Irving, TX 75063<br> 
    <span id="email">[email protected]</span> 
</div> 

Javascript:

document.getElementById("email").innerHtml = "new email"; 
2

Вы можете получить lastChild в div, и использовать replaceChild, чтобы вставить новый текст, который вы хотите:

document.querySelector('button').addEventListener('click', function() { 
 
    var div = document.querySelector('.dealer-addy'); 
 
    var newEmail = '[email protected]'; 
 
    div.replaceChild(document.createTextNode(newEmail), div.lastChild); 
 
});
<div class="dealer-addy"> 
 
    8726 N. Royal Ln<br> 
 
    Irving, TX 75063<br> 
 
    [email protected] 
 
</div> 
 
<button>Replace email</button>

+0

Ничего плохого в ванили JS. Что именно «определяет», что что-то «ребенок», не говоря уже о последнем ребенке? –

0

Это должно делать то, что вы хотите ([email protected] будет заменен [email protected]). Работа скрипку: http://jsfiddle.net/bay44km4/3/

HTML:

<div class="dealer-addy"> 
    8726 N. Royal Ln<br> 
    Irving, TX 75063<br> 
    [email protected] 
</div> 

Javascript:

var dealerAddressHtml = $(".dealer-addy").html(); 
var dealerAddressArr = dealerAddressHtml.split("\n"); 
if (dealerAddressArr.length >=3){ 
    var emailAddress = dealerAddressArr[3]; 
    dealerAddressHtml = dealerAddressHtml.replace(emailAddress, "[email protected]"); 
    $(".dealer-addy").html(dealerAddressHtml); 
} 
Смежные вопросы