2017-10-13 47 views
0

我正试图用jquery替换@ span标签内的span。但是br并没有插入,只要我插入任何其他正确显示结果的文本。
我不明白为什么br标签不工作,这里是我的html代码的一个例子。用jquery在span标记中插入break

<span class="event-date-start">Oct 14 @ 1:00 pm</span> 

这里是我的jQuery

jQuery('.event-date-start').each(function(){ 
    jQuery(this).html(function(_, curr){ 
    return curr.replace('@', '<br />'); 
    }); 
}); 

我也试图与html的,但结果是一样的。我没有对HTML的任何控制,并且想要动态地插入换行符。 我需要一点指导才能完成此任务。

+0

粘贴你的“jQuery的”到测试小提琴完美工作:https://jsfiddle.net/0xfus8zh/ –

回答

1

text()不会插入html。使用html()方法,而不是

jQuery(this).html(jQuery(this).text().replace('@', '<br />')); 

或者作为html(function)

jQuery(this).html(function(_, curr){ 
    return curr.replace('@', '<br />'); 
}); 
+0

非常感谢你的帮助。正如我在我的问题中提到的,我已经尝试过.html这不适合我。现在我会尝试第二种方法。 – Awan

+0

应该正常工作。提供[mcve] – charlietfl

+0

仍然不适合我。我将更新我的问题,为您提供更多细节。我已经在不同的浏览器中尝试过了。 – Awan

0

下面是一个原生的JavaScript解决您的问题。你可以很容易地把它翻译成jQuery。

var eventDateElements = document.getElementsByClassName('event-date-start'); 
 

 

 
function replaceWithBreak(element, stringToReplace) { 
 
    var updatedText = element.innerHTML.replace('@', '<br />'); 
 
    element.innerHTML = updatedText; 
 
} 
 

 

 
replaceWithBreak(eventDateElements[0]);
<span class="event-date-start">Oct 14 @ 1:00 pm</span>

1

您需要获得元素的文本,找到每个“@”,并使用替代,然后返回html

退房解决方案的内容:http://jsfiddle.net/juTtG/7/

HTML

<span class="event-date-start">Oct 14 @ 1:00 pm</span> 

jQuery的

$(document).ready(function() { 
    var $eventDateStart = $(".event-date-start"); 
    var content = $eventDateStart.text().replace('@','<br>'); 
    $eventDateStart.html(content); 
}); 
相关问题