是否有一个JQuery插件比较两个字符串并突出显示差异

时间:2011-09-19 12:05:32

标签: jquery

有没有人知道一个比较两个字符串并突出显示差异的JQuery插件。我试过搜索但是虽然有些东西我找不到特定的JQuery。一个做我想要的javascript的例子是

Javascript Diff Algorithm

这个问题是我想一次在多个不同的字符串上实现它(在表的每一行上1个),这就是为什么我想要一个Jquery,所以我可以使用JQuerys每个选择器方法

3 个答案:

答案 0 :(得分:9)

您可以使用Javascript Diff Algorithm 查看演示:http://jsfiddle.net/gion_13/Z3CRA/1/

而不是直接调用和应用函数:

document.body.innerHTML = diffString(
   "The red brown fox jumped over the rolling log.",
   "The brown spotted fox leaped over the rolling log"
);

您可以将其包装到jquery插件中:

$.fn.pluginName = function(newValue){
    return this.each(function(){
        $(this).html(
            diffString(
                $(this).text(),
                newValue
            )
        );
    });
}

答案 1 :(得分:1)

我不会在你的情况下寻找一个jQuery插件。 jQuery是一个帮助处理DOM更改的框架,但是jQuery中没有很多字符串函数。

通过Google发现的另一个与您引用的几乎相同: http://www.daftlogic.com/sandbox-javascript-compare-differences-between-strings.htm

修改 看起来上面提到的脚本与John Resig使用的脚本相同 感谢您指出danishgoel 结束编辑

您的问题是您希望它在表格中的项目列表上运行吗? 你不需要jQuery来实际检查差异,但你可以使用for循环,或围绕它调用jQuery each

喜欢这个HTML:

<ul id='sentences'>
    <li>sentence 1</li>
    <li>sentence 2</li>
    <li>sentence 3</li>
</ul>

和这个JavaScript:

var default = "my sentence";
$('#sentences li').each(function(){
    var li = $(this);
    var result = $('<div/>').html( diffString( default, li.text() ) );
    li.append(result);
});

正如您所看到的,这里您在jQuery选择器上使用jQuery each,但您需要一个常规的JavaScript函数。不需要jQuery插件就可以完全相同。

答案 2 :(得分:-4)

在谷歌搜索并得到了这个。 jQueryCompare

看看它。