我有一个简单的代码可以使用div克隆下拉菜单:
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
import java.sql.Date
val df = Seq(
20130826, 20130829, 20130816, 20130825
).toDF("registryDate")
df.
withColumn("registryDate2", to_date($"registryDate".cast(StringType), "yyyyMMdd")).
withColumn("todaysDate", lit(Date.valueOf("2018-11-24"))).
withColumn("DaysInBetween", datediff($"todaysDate", $"registryDate2")).
show
// +------------+-------------+----------+-------------+
// |registryDate|registryDate2|todaysDate|DaysInBetween|
// +------------+-------------+----------+-------------+
// | 20130826| 2013-08-26|2018-11-24| 1916|
// | 20130829| 2013-08-29|2018-11-24| 1913|
// | 20130816| 2013-08-16|2018-11-24| 1926|
// | 20130825| 2013-08-25|2018-11-24| 1917|
// +------------+-------------+----------+-------------+
当单击具有id = add_tag的按钮时,它将克隆具有id = tag_select的下拉菜单,但此菜单不起作用。有什么建议吗?
答案 0 :(得分:0)
真正的问题是您的包装ID为tag-wrapper
。但是您在追加为tag_wrapper
时错漏了拼写。即使您解决了此问题,也会提出2个问题。
由于要克隆元素,因此不能再使用id属性。给它一个类名,
注意:使用.clone()具有产生具有重复id属性的元素的副作用,这些id属性应该是唯一的。建议尽可能避免克隆具有此属性的元素,或者改为使用类属性作为标识符。 -https://api.jquery.com/clone/
<select name="tags[]" class="tag_select">
现在,在克隆时,它将选择所有具有相同类名的元素,并导致重复的元素。您可以通过仅从克隆的元素中检索第一个/最后一个元素来避免这种情况。
<div id="tag-wrapper">
<label for="">Tag (max 3)</label>
<button id="add_tag">Add Tag</button>
<div id="tag_selects">
<select name="tags[]" class="tag_select">
<option value="0">Nothing</option>
@foreach ($tags as $tag)
<option value="{{$tag->id}}">{{$tag->name}}</option>
@endforeach
</select>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
var counter = 0;
$(document).ready(function(){
$("#add_tag").click(function(e){
e.preventDefault();
counter++;
if(counter < 3){
$(".tag_select").clone().last().appendTo('#tag_selects');
}
});
});
</script>
</div>
JS Fiddle工作示例:https://jsfiddle.net/za8h2L19/1/