jQuery选择器不检测修改的元素

jQuery Selector not detecting modified element

本文关键字:元素 修改 检测 选择器 jQuery      更新时间:2023-09-26

我正在编写一种有序的照片管理面板,其中我使用flexx和order属性。order属性从数据库中加载,所有元素都正确显示。我还做了一个函数来改变顺序。它由两个箭头组成,它们向右或向左移动元素,修改它的order属性,并使用ajax在数据库中修改它。

我的问题是,在我用jQuery修改order属性后,该元素不再可以用选择器访问,所以当我向右移动元素,之后我向左移动它不工作。

使用开发人员控制台,我试图按指令执行脚本指令,问题是,当我选择一个元素:

var element = $('.thumb[style="order: 3"]');

它返回正确的元素,但如果在此之后我修改它使用:

element.css('order',4);

当我再次使用选择器时,它不会返回任何东西。

$('.thumb[style="order: 4"]');

返回
[]

但是在Chrome和Firefox的元素检查器中,我看到元素已经改变了它的顺序。

我做了一个小提琴来显示这个问题。我试着找过了,但什么也没找到。如有任何帮助,不胜感激。

https://jsfiddle.net/fskxw2wp/

这是因为当您使用.css添加属性时,它会在值后面添加分号:

<div class="thumb" style="order: 1;">2</div>

所以你的选择器现在是错误的(因为它不包含分号)

我要么把它添加到你的初始加载和选择器(更新后的小提琴)或改变使用一个数据属性,而不是做一个过滤器