无法删除动态内容(Jquery)

时间:2016-09-26 08:19:05

标签: jquery

我看不出为什么我不能用Jquery删除一些动态内容。

HTML

<div class="col-md-12" id="formCopy">
    <!--FORM-->
    <form class="form form-inline well well-sm" id="copyForm">
        <!--SELECT objNr-->
        <select id="selectObjNr" style="width: 150px;">
            <option></option>

这是我的JS:

//ObjNr on CHANGE
$(document).on('change', '#objNr', function(){
    //Remove old element
    $('.elNr').remove();

    //Grab selected objNR
    objNr = $(this).val();

    //Get elements for object
    $.ajax({
        url: 'get.php',
        method: 'post',
        data: {objNr: objNr},
        success: function(result){
            //INSERT new element to DOM
            $(result).insertAfter('#objNr);

            //ENABLE SELECT2
            $( "#elNr").select2({
            });
        }
    })
})

我也尝试过:

$('#objNr').on('change', function(){
    $(document).find('#elNr').remove();
    $(this).siblings('.elNr').remove();

所以,我做了一个jsfiddle进行一些测试..
问题是小提琴的工作正确。
https://jsfiddle.net/86Lrdakc/

如果我console.log($('#elNr'))我可以看到动态元素。

我缺少什么?
唯一的区别是我如何创建动态元素。

PHP

//SELECT2
echo '<select id="elNr" class="elNr" style="width: 150px;">';
    //OPTIONS
    while($row = $stmt->fetch()){
        echo '<option value="'.$row['element_nr'].'">'.$row['element_nr'].'</option>';
    }
//END SELECT2
echo '</select>';

更新

//Find old dynamic element
$('#objNr').on('change', function(){
    old = $(this).siblings('#elNr'); console.log(old)

控制台:[select#elNr.elNr,prevObject:n.fn.init [1],context:select#objNr]

动态内容:

<select id="elNr" class="elNr" style="width: 150px;"><option value="001">001</option><option value="003">003</option><option value="004">004</option><option value="005">005</option><option value="006">006</option><option value="007">007</option><option value="008">008</option><option value="009">009</option><option value="010">010</option><option value="011">011</option><option value="012">012</option><option value="013">013</option><option value="014">014</option><option value="015">015</option><option value="016">016</option><option value="017">017</option><option value="018">018</option></select>

似乎插件“SELECT2”将我的选择转换为跨度?!

<span class="select2 select2-container select2-container--default" dir="ltr" style="width: 150px;"><span class="selection"><span class="select2-selection select2-selection--single" role="combobox" aria-autocomplete="list" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-owns="select2-selectElNr-results" aria-labelledby="select2-selectElNr-container"><span class="select2-selection__rendered" id="select2-selectElNr-container" title="001">001</span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span></span></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>

$('#objNr').on('change', function(){
    //Find old dynamic element
    oldEl = $(this).siblings('#elNr');
    if(oldEl.length){
        //Remove old SELECT2 elNr
        $(".elNr").select2('destroy');
        $(".elNr").remove();
    }

2 个答案:

答案 0 :(得分:0)

很难说没有更多的代码,但也许你已经把你的JS放在了页面的顶部?如果是这种情况,则在设置事件时该元素不存在。

您可以在正文上设置事件,以确保考虑动态元素。

$('body').on('change', '#ObjNr', function() {...});

答案 1 :(得分:0)

问题在于Jquery插件SELECT2 我必须首先销毁它,然后删除选择。

{{1}}