javascript - 使新元素匹配幻灯片 ui 设置

标签 javascript jquery html css

我有一个 jQuery slider ,它正在修改幻灯片上的 div css。一切正常,但是当我添加一个新的 div 时,在再次移动 slider 之前, slider 的设置不会附加到新的 div。

HTML

<div class="inputWrap hidden">
  <input class="inputNumber" type="text" value="5">
  <div class="slider"></div>
</div>

<div class="boxout">
  <div class="box"></div>
</div>

<div class="add">
  add box
</div>

CSS

.boxout {

width: 200px;
height: 200px;
}

.box {

width: 10%;
height: 10%;
background: black;
}

JQUERY

$(".slider").slider({
  min: 0,
  max: 10,
  slide: function(event, ui) {
    console.log("slide", ui);
    $(".box").css("width", 10 + ui.value * 2 + "%");
    $(this)
      .parent()
      .find(".inputNumber")
      .val(ui.value);
  },
  create: function(event, ui) {
    $(this).slider(
      "value",
      $(this)
        .parent()
        .find(".inputNumber")
        .val()
    );
  }
});

var slider = $(".slider");
slider
  .slider("option", "slide")
  .call(slider, null, { value: slider.slider("value") });

$(".add").click(function() {
  $(".boxout").append('<div class="box"></div>');
});

fiddle

在这个 fiddle 中,您可以看到我如何完美地设置所有内容,但是当添加新的 div 时,它与上面的框不匹配,直到再次使用 slider

http://jsfiddle.net/or5fhsvh/1/

感谢您的帮助。

最佳答案

要实现您想要的效果,您需要修改 .add 类上的 click 函数。

$(".add").click(function() {
 var slideValue = parseInt($('.inputNumber').val());
 var boxWidth = (10+(slideValue*2)) + '%';
 $(".boxout").append('<div class="box" style="width:'+boxWidth+'"></div>');
});

它将获取 slider 的值,计算所需的框宽度,然后将该框附加到 UI 中。这样,对于您添加的关于 slider 值的所有框,宽度都保持不变。而且您无需滑动 slider 即可反射(reflect)该更改。

这是工作 JSFIDDLE

关于javascript - 使新元素匹配幻灯片 ui 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47978510/

相关文章:

javascript - 为什么我的 Javascript 函数在加载时运行

javascript - 应该调用哪个触摸事件 e.preventDefault() 来取消触摸设备上的 "click"?

javascript - CSS/Javascript 挑战 - 只想为文本居中的最后一行实现底部边框

javascript - 输入时按下和按下键盘时显示弹出窗口

html - 带有 Bootstrap 的 Google map 没有响应

javascript - 返回未定义的 json 对象 [nodejs, fs]

javascript - 添加来自不同字段的值并将它们相加

javascript - 将文本从文本字段复制到文本区域+标签

jQuery——添加子元素的正确方法?

jquery - 保持侧边栏与内容相同的高度