0

我有一个下拉菜单,可以从数据库列中提取文本。数据库列可以包括 HTML 标记。在下拉列表中,我显然不需要在文本中使用它。我正在研究一些 jquery,它部分完成了我正在寻找的东西。但是,它似乎只是替换了每个字符的第一个实例

$('select option').each(function() { 
    this.text = this.text.replace(' ', ' ');
    this.text = this.text.replace('<div>', '' );
    this.text = this.text.replace('</div>', '' );
});

这是下拉菜单的 HTML:

<select name="ctl00$SubPageBody$ClassList" id="ctl00_SubPageBody_ClassList">
<option value="196">Four Week Series: July 19, 2012, 11:00am-12:00pm&<div>July 26, 2012, 11:00am-12:00pm&nbsp;</div><div>August 2, 2012, 11:00am-12:00pm</div><div>August 9, 2012, 11:00am-12:00pm</div></option>

</select>
4

4 回答 4

3

<option>不知道为什么在一个元素中会有 HTML ,但是......

jsFiddle

$('select option').each(function() { 
    this.text = $(this).text();       
});
于 2012-06-15T15:16:57.010 回答
0

使用正则表达式替换所有实例并做任何你想做的事情:

http://davidwalsh.name/javascript-replace

例如,这将替换 'hello' 和/或 'wo':

var s = 'hello world hello';
var s = s.replace(/hello|wo/g, '');

请记住,您不能使用正则表达式解析 HTML :)

RegEx 匹配打开的标签,XHTML 自包含标签除外

于 2012-06-15T15:22:10.087 回答
0

我同意在服务器端这样做会更合适。

如果你必须用 Javascript 来做,你可以使用正则表达式:

$(this).text().replace(/REPLACEME/g, 'repclacement');

注意 RegEx 末尾的 g:它是全局标志。

您还需要转义一些特殊字符,例如 /。</div> 也是如此。

于 2012-06-15T15:22:47.597 回答
0

您可以使用正则表达式中的 /g 选项来替换一行中的所有实例。

this.text = this.text.replace(/<\/div>/g, '' );

请注意,当您想使用正则表达式查找时, / 会替换 '。

于 2012-06-15T15:23:58.903 回答