jQuery clone()什么都不做

时间:2018-11-24 14:09:01

标签: jquery laravel

我有一个简单的代码可以使用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的下拉菜单,但此菜单不起作用。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

真正的问题是您的包装ID为tag-wrapper。但是您在追加为tag_wrapper时错漏了拼写。即使您解决了此问题,也会提出2个问题。

  1. 由于要克隆元素,因此不能再使用id属性。给它一个类名,

      

    注意:使用.clone()具有产生具有重复id属性的元素的副作用,这些id属性应该是唯一的。建议尽可能避免克隆具有此属性的元素,或者改为使用类属性作为标识符。 -https://api.jquery.com/clone/

    <select name="tags[]" class="tag_select">
    
  2. 现在,在克隆时,它将选择所有具有相同类名的元素,并导致重复的元素。您可以通过仅从克隆的元素中检索第一个/最后一个元素来避免这种情况。

    <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/