为什么jQuery BlockUI插件会阻塞整个页面?

时间:2015-02-14 01:25:32

标签: jquery ruby-on-rails jquery-blockui

在我的Ruby on Rails应用程序中,我试图阻止这样的单个表单:

$('#<%= @category.key %> .save').click(function() {
  $('#<%= @category.key %> .assignment_form_new').block({ message: null });
});

然而,当我在元素上调用此函数时,它会阻止整个页面,而不是仅阻止表单。如果您愿意,我可以提供更多代码。

正如您在此图片中看到的那样,底行是一个新的分配行,这是我试图阻止的特定形式:

enter image description here

但是,当在此特定行上调用块函数时,它几乎会阻止整个页面:

enter image description here

关于可能导致这种情况的任何想法?我知道我使用的选择器是唯一的,因此它不会选择使用相同ID和类的其他东西。

进展更新1:因此,您可能会从屏幕截图中看到,我正在使用jQuery UI标签。看起来当我在新的赋值表单上调用block时,它会阻止jQuery UI Tabs,这显然会阻止它内部的所有内容。

就像演示一样,我想告诉你这不是事件冒泡的问题,因为我可以在控制台中调用该函数,它仍然会阻止jQuery UI选项卡:

enter image description here

进展更新2:想想我发现了这个问题。我正在使用的DIV显示为'table','table-row'和'table-cell',显然blockUI不能阻止表元素。所以我必须想办法解决这个问题。

2 个答案:

答案 0 :(得分:0)

确保您没有使用过它。

$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);

如果不是这种情况,则可能存在事件冒泡的问题。 在这种情况下,你可以使用它:

event.stopPropagation();

希望这有帮助。

答案 1 :(得分:0)

好的,我已经明白了。永远不要尝试使用jQuery blockUI阻止表行,因为它不起作用。我采用的另一种方法是循环并阻止表格行中的每个单元格。