从元素中删除Jquery并重新应用?

时间:2016-09-13 10:06:11

标签: jquery bind reload wickedpicker

我正在使用wickedpicker并且有一个包含2个时间字段的页面。

当按下按钮时,我需要将每个字段中的时间分别更新到另一个字段。

我尝试的所有内容都不起作用,我认为这是因为脚本已经绑定(不确定这是否是正确的术语)到输入元素。

所以我的问题是可以加载和绑定脚本,卸载然后重新应用不同的参数吗?

这是我目前的代码:

<script>
      $(document).ready(function() {
            $(".timepicker").wickedpicker({twentyFour: true});


            $("#btn").click(function(e) {
                alert ('click')
                $("#timeTwo").wickedpicker({twentyFour: true, now: "17:35"});
            })
      });
    </script>

    <body>

    <button id='btn' class='formBtn'>CHANGE</button>

    <input type='text' class='timepicker' id='timeOne' name='timeOne' value='' >

    <input type='text' class='timepicker' id='timeTwo' name='timeTwo' value='' >

    </body>

我正在加载timepicker,因为我需要能够立即使用它,但我还需要能够通过按钮点击更新时间。

我已尝试在timeTwo中设置默认值,该值会被timepicker覆盖。我使用JQuery来设置timeTwo的值,输入显示正确的值,但是timepicker现在显示时间,而不是字段显示的时间。

有什么想法吗? 感谢

更新 删除和读取元素有效。

$("#btn").click(function(e) {
     console.log ('click')
     var test = $("#timeTwo").remove();
     $('body').append( test ); // later
    $("#timeTwo").wickedpicker({twentyFour: true, now: '15:34'});
});

但我如何确保将其加载回同一位置? 感谢

2 个答案:

答案 0 :(得分:1)

此处的wickedpicker:https://ericjgagnon.github.io/wickedpicker/没有设置内部使用时间的方法。因为它检测到元素是否已经有一个邪恶的拾取器,所以你不能简单地再次应用它,正如你已经注意到的那样。 最干净的解决方案是扩展wickedpicker所需的功能。另一种解决方法可能是删除输入,然后重新创建它。

编辑:我给你做了一个小片段,以证明取代者的更换。它不是一个很好的解决方案,因为它会破坏/匹配datepicker元素的其他事件或引用。你必须小心那些。

扩展原始的邪恶拾取器也不会很难,但我认为超出了这个问题。

PS:请忽略css部分。我不得不内联wickedpicker css以使其工作(减去正确的字体)。你应该只需要javascript部分。

&#13;
&#13;
 $(document).ready(function() {
   $(".timepicker").wickedpicker({
     twentyFour: true
   });


   $("#btn").click(function(e) {
     $("#timeTwo").replaceWith("<input type='text' class='timepicker' id='timeTwo' name='timeTwo' value='' />");
     $("#timeTwo").wickedpicker({
       twentyFour: true,
       now: "17:35"
     });
   })
 });
&#13;
.wickedpicker {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  box-shadow: 0 0 0 1px rgba(14, 41, 57, .12), 0 2px 5px rgba(14, 41, 57, .44), inset 0 -1px 2px rgba(14, 41, 57, .15);
  background: #fefefe;
  margin: 0 auto;
  border-radius: .1px;
  width: 270px;
  height: 130px;
  font-size: 14px;
  display: none
}
.wickedpicker__title {
  background-image: -webkit-linear-gradient(top, #fff 0, #f2f2f2 100%);
  position: relative;
  background: #f2f2f2;
  margin: 0 auto;
  border-bottom: 1px solid #e5e5e5;
  padding: 12px 11px 10px 15px;
  color: #4C4C4C;
  font-size: inherit
}
.wickedpicker__close {
  -webkit-transform: translateY(-25%);
  -moz-transform: translateY(-25%);
  -ms-transform: translateY(-25%);
  -o-transform: translateY(-25%);
  transform: translateY(-25%);
  position: absolute;
  top: 25%;
  right: 10px;
  color: #34495e;
  cursor: pointer
}
.wickedpicker__close:before {
  content: '\00d7'
}
.wickedpicker__controls {
  padding: 10px 0;
  line-height: normal;
  margin: 0
}
.wickedpicker__controls__control,
.wickedpicker__controls__control--separator {
  vertical-align: middle;
  display: inline-block;
  font-size: inherit;
  margin: 0 auto;
  width: 35px;
  letter-spacing: 1.3px
}
.wickedpicker__controls__control-down,
.wickedpicker__controls__control-up {
  color: #34495e;
  position: relative;
  display: block;
  margin: 3px auto;
  font-size: 18px;
  cursor: pointer
}
.wickedpicker__controls__control-up:before {
  content: '\e800'
}
.wickedpicker__controls__control-down:after {
  content: '\e801'
}
.wickedpicker__controls__control--separator {
  width: 5px
}
.text-center,
.wickedpicker__controls,
.wickedpicker__controls__control,
.wickedpicker__controls__control--separator,
.wickedpicker__controls__control-down,
.wickedpicker__controls__control-up,
.wickedpicker__title {
  text-align: center
}
.hover-state {
  color: #3498db
}
@font-face{font-family:fontello;src:url(../fonts/fontello.eot?52602240);src:url(../fonts/fontello.eot?52602240#iefix) format("embedded-opentype"),
url(../fonts/fontello.woff?52602240) format("woff"),
url(../fonts/fontello.ttf?52602240) format("truetype"),
url(../fonts/fontello.svg?52602240#fontello) format("svg");
font-weight:400;
font-style:normal
}
.fontello-after:after,
.fontello:before,
.wickedpicker__controls__control-down:after,
.wickedpicker__controls__control-up:before {
  font-family: fontello;
  font-style: normal;
  font-weight: 400;
  speak: none;
  display: inline-block;
  text-decoration: inherit;
  width: 1em;
  margin-right: .2em;
  text-align: center;
  font-variant: normal;
  text-transform: none;
  line-height: 1em;
  margin-left: .2em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale
}
.clearable-picker {
  position: relative;
  display: inline-block
}
.clearable-picker>.hasWickedpicker {
  padding-right: 1em
}
.clearable-picker>.hasWickedpicker::-ms-clear {
  display: none
}
.clearable-picker>[data-clear-picker] {
  position: absolute;
  top: 50%;
  right: 0;
  transform: translateY(-50%);
  font-weight: 700;
  font-size: .8em;
  padding: 0 .3em .2em;
  line-height: 1;
  color: #bababa;
  cursor: pointer
}
.clearable-picker>[data-clear-picker]:hover {
  color: #a1a1a1
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://raw.githubusercontent.com/ericjgagnon/wickedpicker/master/dist/wickedpicker.min.js"></script>

<button id='btn' class='formBtn'>CHANGE</button>
<input type='text' class='timepicker' id='timeOne' name='timeOne' value='' />
<input type='text' class='timepicker' id='timeTwo' name='timeTwo' value='' />
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以按照下面的说明进行操作,您可以在初始化后动态更改选项..请参阅document

$(document).ready(function() {
     $(".timepicker").wickedpicker({twentyFour: true});
     $("#btn").click(function(e) {
         alert ('click')
         $("#timeTwo").wickedpicker('twentyFour', true);
         $("#timeTwo").wickedpicker('now', "17:35");
     });
});