jquery - 如何在单击的任何 HTML 元素中放置微调器

标签 jquery css

每当用户在我的网站上执行操作时,我想显示一个微调器图标。这主要发生在通过 AJAX 提交表单(例如评论回复、图片上传等)时。当用户单击需要通过 AJAX 加载内容的内容时,也可能发生这种情况。

目前我有一个单独的 div 来保存我的微调器图标,例如<div id="ajax-spinner"></div> .它固定在屏幕顶部,使用 JQuery 的 beforeSend() 显示/隐藏。和 success ajax() 方法中的选项。有点像这样:

jQuery.ajax({
            type: "POST",
            url: 'some_url_that_processes_this_form',
            data:'data_to_send',

            beforeSend: function(){
            $("#ajax-spinner").show();
            },

            success: function(data)
            {
            $("#ajax-spinner").hide();
            }

           });

问题是它对用户来说不是很友好,因为显示微调器的地方离他们实际点击的按钮不远。它甚至与他们点击的区域不在同一区域。

我想做的是在他们点击的每个元素旁边显示微调器。因此,如果他们单击“喜欢”链接,那么我想要该链接旁边的微调器。如果他们上传图片,那么我希望微调器出现在包含图片的框中。

实现此目标的建议设计模式是什么?不是在每个 HTML 标记中都提供微调器的副本,而是有某种方法可以动态定位微调器并动态调整它的大小,以便它可以在我想要的页面上的任何地方重复使用吗?如果您想了解我正在努力实现的目标,Facebook 已经解决了这个问题。

最佳答案

这里有一个 CodePen 可以帮助您入门:http://codepen.io/trevanhetzel/pen/GsEuI

基本上,您需要在提交表单时捕获当前鼠标位置。不幸的是,我找不到使用 .on('submit') 事件的方法,但是使用 .on('click') 是可行的事件,因为您可以将参数传递给函数以使用 pageXpageY 方法捕获您刚刚单击的位置。

这并不理想,因为您希望它在 beforeSend 操作中完成,但您仍然可以在 beforeSendsuccess< 中进行显示和隐藏调用,点击定位即可。

希望这对您有所帮助!

super 基本标记

<div id="ajax-spinner"></div>

<form>
  <button type="submit">Submit</button>
</form>

<form>
  <button type="submit">Submit</button>
</form>

<form>
  <button type="submit">Submit</button>
</form>

super 基础的 CSS

form {
  margin: 20px;
}

#ajax-spinner {
  display: none;
  position: absolute;
  width: 50px;
  height: 50px;
  background: grey;
  border-radius: 50%;
}

JS

jQuery('button').on('click', function (e) {
  var mousePosX = e.pageX,
      mousePosY = e.pageY;

  jQuery('#ajax-spinner')
    .show()
    .css('top', mousePosY, 'left', mousePosX);  
});

关于jquery - 如何在单击的任何 HTML 元素中放置微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26406131/

相关文章:

javascript - jQuery 1.9.1 中 $.inArray 函数的错误

javascript - 访问自定义验证规则中的其他字段

javascript - 使用 jQuery 切换 CSS 类

javascript - 使用 ajax 在服务器端接收 json 时出错

html - float div 边框不重叠

javascript - 如何设计带有内部 float 的 div 以水平扩展以允许所有内部 float div 适合?

javascript - 使用 ScrollMagic 停止带有背景的文本滚动

html - 对齐 div 内的文本

javascript - 如何使用带有 php 的 cropit jquery 插件裁剪和上传照片

javascript - 如何在粘性菜单上只显示主菜单