我有一个通过jQuery修改的表单来改变某些字段的位置。然后,当提交表单时,它使用这些字段的位置来确定相对“位置”值。
不幸的是,它似乎只是偶尔会记录字段相对位置的变化。更具体地说,它似乎只是偶尔注册顶级变化,而第二级变化似乎是一致的:
$("#newsletter_form").on("submit", function(e) {
e.preventDefault();
$('.newsletter_category').each(function(i, category) {
$(category).find('.category_position').val(i + 1);
$(category).children('.fields').each(function(j, article) {
$(article).find('.article_position').val(j + 1);
});
});
$("#newsletter_form").unbind('submit').submit();
});
基本上,当调用“submit”事件时,它会遍历每个newsletter_category,相对于任何其他newsletter_category更改该newsletter_category的category_position字段的位置,然后更改newsletter_category中每篇文章的位置。或者至少那是期望的行为。
我已经注释掉了最后一行,并确认一切都设置正确,这是我的下一个最佳猜测,即存在某种竞争条件。但是jQuery的每个函数都是同步的,所以我无法想象正在发生什么样的竞争条件。
有什么想法吗?
答案 0 :(得分:0)
好的,想通了。
对于好奇,这个问题涉及Rail的Turbolinks。具体来说,Turbolinks没有注册jQuery.ready()事件,因此其中的任何代码都无法正确注册。有很多方法可以解决这个问题,但如果你的应用程序不是真的需要我会完全删除Turbolinks(就像我一样)。