Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery:仅当新内容不同时才替换内容_Jquery_Ajax - Fatal编程技术网

Jquery:仅当新内容不同时才替换内容

Jquery:仅当新内容不同时才替换内容,jquery,ajax,Jquery,Ajax,我有一个php文件,在ajax中每隔X秒调用一次,以刷新内容。此php文件返回一个js文件,该文件必须更改div的html内容,并产生效果 但我想改变这个内容,只有当新的是不同的!否则,我有一个div刷新自己的效果,即使它是相同的内容 我使用以下代码进行了测试: if ($('#mydiv').html()!=data_insertion) $('#mydiv').fadeTo("fast", 0, function () {$(this).html(data_insertion).fadeTo

我有一个php文件,在ajax中每隔X秒调用一次,以刷新内容。此php文件返回一个js文件,该文件必须更改div的html内容,并产生效果

但我想改变这个内容,只有当新的是不同的!否则,我有一个div刷新自己的效果,即使它是相同的内容

我使用以下代码进行了测试:

if ($('#mydiv').html()!=data_insertion) $('#mydiv').fadeTo("fast", 0, function () {$(this).html(data_insertion).fadeTo("fast", 1)});

但此代码不是跨浏览器的。。。实际上,我的data_插入变量包含一些html内容。每个浏览器都会插入它,更改属性顺序等。这就是为什么,$('#mydiv').html()永远不等于数据插入。

您可以使用附加到元素的结果的本地缓存。 在ajax回调中,执行以下操作:

if (jQuery.data($('#mydiv')[0], 'last_data_insertion') != data_insertion) {
    // Update DOM content
    $('#mydiv').fadeTo("fast", 0, function () {$(this).html(data_insertion).fadeTo("fast", 1)});

    // Reset the local cache
    jQuery.data($('#mydiv')[0], 'last_data_insertion', data_insertion);
}

可以使用附加到元素的结果的本地缓存。 在ajax回调中,执行以下操作:

if (jQuery.data($('#mydiv')[0], 'last_data_insertion') != data_insertion) {
    // Update DOM content
    $('#mydiv').fadeTo("fast", 0, function () {$(this).html(data_insertion).fadeTo("fast", 1)});

    // Reset the local cache
    jQuery.data($('#mydiv')[0], 'last_data_insertion', data_insertion);
}

你可以只使用.text(),还是这还不够?嗯,事实上,例如,我有数据_insert=“”;例如,Chrome将插入“”和IE“”。因此,内容将始终是不同的,即使他们是相同的事实!你可以只使用.text(),还是这还不够?嗯,事实上,例如,我有数据_insert=“”;例如,Chrome将插入“”和IE“”。因此,内容将始终是不同的,即使他们是相同的事实!是的,这就是我想做的。。。将数据插入直接与最后一个数据插入进行比较(不要使用$('#mydiv')来获取浏览器插入的最后一个内容,以排除不同解析等的错误)…我将var last_data_insertion=''?因为正如我所说的,它是一个php文件,每X秒通过ajax获取一次……顺便说一下,在返回的php文件中,它有20行,如我所示。我必须在插入前检查每一个。那么ajax回调是很难的吗?如果是同一个调用返回20行,那么就没有问题了,上面的解决方案是可以的。为了避免在全局范围内初始化最后的\u数据\u插入,您可以将其附加到元素数据存储(将我的答案更改为使用元素存储)数据的优秀解决方案!我从你以前的解决方案(vars)开始,它成功了!但我认为数据方法是最好的!是的,这就是我想做的。。。将数据插入直接与最后一个数据插入进行比较(不要使用$('#mydiv')来获取浏览器插入的最后一个内容,以排除不同解析等的错误)…我将var last_data_insertion=''?因为正如我所说的,它是一个php文件,每X秒通过ajax获取一次……顺便说一下,在返回的php文件中,它有20行,如我所示。我必须在插入前检查每一个。那么ajax回调是很难的吗?如果是同一个调用返回20行,那么就没有问题了,上面的解决方案是可以的。为了避免在全局范围内初始化最后的\u数据\u插入,您可以将其附加到元素数据存储(将我的答案更改为使用元素存储)数据的优秀解决方案!我从你以前的解决方案(vars)开始,它成功了!但我认为数据方法是最好的!