0

我被一些基于 jQuery 的库所困扰,它迫使我向标记中的许多元素添加一个属性,以便它“不引人注意”为我做一些 AJAX 表单发布,就好像他们还没有查了字典来了解“不引人注目”的实际含义。

在尝试从外部戳该库以更改它正在使用的选择器后,我放弃了,现在尝试使用 jQuery 添加属性,以便我可以使它实际上不显眼。

如果我这样做:

$('form.filter, .pagination a, .sortable a').attr('data-remote', true);

这会在执行时修复每个元素。问题是 AJAX 查询替换了页面的部分,然后包含更多应该添加属性的元素。所以我发现第一次点击有效,但第二次在不使用 AJAX 的情况下加载页面,此时循环重复,因为整个文档已再次加载。

我模糊地认为这on()是为了这类事情,但我尝试了多种使用它的方法,但没有一种方法被解雇(我alert在那里有一个这样我会发现它什么时候发生。)

这样做的正确方法是什么?

4

2 回答 2

2

不幸的是,.on()在这里帮不上忙。这仅对事件委托有帮助。

您可能应该硬着头皮直接包含属性。


如果你坚持,你可以为此使用DOM Mutation Observers

对于较旧的浏览器,您必须使用较旧的DOM Mutation Events,现在已弃用。


有关这两种方法的解释,请阅读这篇文章:

使用 Mutation Observers 检测 DOM 更改

于 2013-08-28T04:58:37.070 回答
2

您最好的选择是找到表单发布的成功回调并在其中包含您的属性分配。您还可以使用 Floris 所说的全局 ajax 成功回调,方法是添加

$(document).ajaxSuccess(function() { 
    $('form.filter, .pagination a, .sortable a').attr('data-remote', true);
}); 
于 2013-08-28T05:05:17.387 回答