【问题标题】:How to make a parent div that whenever I click anywhere inside it, a son div (jQuery UI draggable) will instantly go there?如何制作一个父 div,每当我点击它里面的任何地方时,一个子 div(jQuery UI 可拖动)会立即去那里?
【发布时间】:2017-06-26 20:07:23
【问题描述】:

这是我不知道如何更好地编码的事情列表:

  1. 当您单击栏中的任意位置时,我希望按钮(黑点)立即转到那里,并自动更改其下方显示的百分比。
  2. 此外,当我将按钮拖动到我想要的位置并在栏 div 外取消单击/拖放按钮时,下面的百分比不会刷新。我该如何纠正?

代码如下:

<script src="jQueryUI/external/jquery/jquery.js"></script>
<script src="jQueryUI/jquery-ui.js"></script>
<script src="jQueryUI/jquery-ui.css"></script>

<script>
$(function() {
	$( ".draggable" ).draggable({
		axis: 'x', containment: [-234,0,450,0]
	});
});
</script>

<script>
$( ".but1" ).click(function( event ) {
  var offset = $( ".but1" ).offset();
  event.stopPropagation();
  var conta = (offset.left - 752)/3.42;
  var posFinal = Math.round( conta );
  $( "#resp1" ).text( posFinal + "%" );
});
</script>
.draggable {
	width: 700px;
	height: 0px;
	margin: 0px auto;
	position: relative;
}

#bar {
	width: 350px;
	height: 12px;
	background-color: #ff0a00;
	border-right: 350px solid #00b4ff;
	margin: 0px auto;
	border-radius: 5px;
}

#circle {
	position: relative;
	top: -15px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: black;
	margin: 0px auto;
}

#discordo {
	position: relative;
	top: 65px;
	left: -386px;
	font-weight: bold;
}

#concordo {
	position: relative;
	top: 31.8px;
	left: 390px;
	font-weight: bold;
}

#organizado {
	position: relative;
	top: -70px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form method="post" action="x.php" id="questions">
<h3>Pergunta 1</h3>
<p>Maconha deveria ser legalizada para uso recreacional</p>
<div id="organizado">
<p id="discordo">Discordo</p>
<p id="concordo">Concordo</p>
<div id="bar"> </div>
<div class="draggable ui-widget-content">
<div id="circle" class="but1"> </div>
</div>
<div>
</div>
<p id="resp1"></p>

这是图片,您可以更好地对其进行可视化。

【问题讨论】:

  • hmmm.... 你的意思是像 jquery ui 滑块小部件?看看它的源代码。
  • 请提供一些示例代码。请看:stackoverflow.com/help/mcve
  • 看起来 jQuery UI 滑块为您创建了栏和句柄。如何将它应用到我的把手和杆上?
  • @MuriloGomes 看起来你正在加载 2 个 jQuery 库,而只需要 1 个。最好尝试为您的问题制作一个 jsfiddle 示例。
  • @Twisty 你是什么意思?

标签: javascript jquery html css jquery-ui


【解决方案1】:

如果你想使用滑块,这里有一个方法。

工作示例:https://jsfiddle.net/Twisty/qpbzavwq/8/

HTML

<form method="post" action="x.php" id="questions">
  <h3>Pergunta 1</h3>
  <p>Maconha deveria ser legalizada para uso recreacional</p>
  <div id="organizado">
    <p id="discordo">Discordo</p>
    <p id="concordo">Concordo</p>
    <div id="bar-1" class="slider">
    </div>
    <p id="resp1"></p>
  </div>
</form>

CSS

#bar-1 {
  background-color: #00b4ff;
  margin: .4em .2em;
  border-radius: 5px;
}

#bar-1 .ui-slider-range {
  background-color: #ff0a00;
}

#bar-1 .ui-slider-handle {
  background-color: #000000;
  border-radius: 50%;
  border: 0;
}

#discordo {
  font-weight: bold;
  width: 100px;
  z-index: 1000;
}

#concordo {
  font-weight: bold;
  width: 100px;
  z-index: 1000;
}

JavaScript

$(function() {
  $("#bar-1").slider({
    orientation: "horizontal",
    range: "min",
    value: 65,
    create: function() {
      $("#discordo").position({
        my: "right top",
        at: "left top+2",
        of: "#bar-1 .ui-slider-handle"
      });
      $("#concordo").position({
        my: "left top",
        at: "left+25 top+2",
        of: "#bar-1 .ui-slider-handle"
      });
    },
    slide: function(e, ui) {
      $("#resp1").html(ui.value + "%");
      $("#discordo").position({
        my: "right top",
        at: "left top+2",
        of: "#bar-1 .ui-slider-handle"
      });
      $("#concordo").position({
        my: "left top",
        at: "left+25 top+2",
        of: "#bar-1 .ui-slider-handle"
      });
    }
  });
});

以后,只需使用演示:http://jqueryui.com/slider/ 并查看 API 文档。

Slider 包含许多您正在寻找的功能。它很容易使用 CSS 设置样式和主题。

【讨论】:

    猜你喜欢
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多