0

我在这里做了一个函数:

function locationOfVideo(){//Outputs video location div according to post text
    var ytVideoDiv = '<div class="youtube-video"><div id="<?php echo $divName; ?>-video"></div></div>';

    $j('#main .content:contains("<--video-->")').replace('<--video-->', ytVideoDiv);
}

我认为这会起作用,但我大错特错并且有点累。无论如何,我在这里做错了什么?

4

4 回答 4

3

replace 是一个普通的 js 函数,用于替换部分字符串或类似内容,而不是替换 jQuery 对象的内容。

如果目标是替换所选元素中的所有内容,并且使用正确的选择器,则可以使用html()并执行以下操作:

$j('#main .content:contains("<--video-->")').html(ytVideoDiv);

或仅替换字符串<--video-->

$j('#main .content:contains("<--video-->")').html(function(i,html) {
    return html.replace('&lt;--video--&gt;', ytVideoDiv)
});​

小提琴

于 2012-08-17T03:02:23.897 回答
1
$j('#main .content:contains("<!--video-->")').replace('<--video-->', ytVideoDiv);

应该:

var videoNode = $j('#main .content:contains("<!--video-->")');
videoNode.html(videonode.html().replace('<!--video-->', ytVideoDiv));

或者:

$j('#main .content:contains("<!--video-->")').html(function(index, oldhtml) { return oldhtml.replace('<--video-->', ytVideoDiv); });
于 2012-08-17T03:04:32.737 回答
1

不要<--video-->在您的 html 中使用,更改为其他类似{video}.

然后这样做:

$('#main .content:contains("{video}")').replaceWith(function() {
  return $(this).text().replace('{video}', ytVideoDiv);
});
于 2012-08-17T03:14:37.457 回答
0

最好输出带有特殊标签的元素,如 abbr,查看 javascript 模板 usabe,如jquery-timeago

<abbr class="timeago" title="2011-12-17T09:24:17Z">December 17, 2011</abbr>

代替:

$('abbr.timeago').timeago()
于 2012-08-17T03:28:19.690 回答