jquery – 如何在clone()操作期间删除所选元素

我有一个克隆的选择框.我想从每个克隆的选择框中删除用户以前的选择.这是执行clone()的方法
function addselect(s){
   $('#product_categories > .category_block:last').after(
      $('#product_categories > .category_block:last').clone()
   );
   set_add_delete_links();
   return false;
}

function set_add_delete_links(){
    $('.remove_cat').show();
    $('.add_cat').hide();
    $('.add_cat:last').show();
    $("#product_categories > .category_block:only-child > .remove_cat").hide();
}

function removeselect(s){
    $(s).parent().remove(); 
    set_add_delete_links(); 
    return false;
}

这种方法有效,但不会删除最后选择的:

$('#product_categories > .category_block:last option:selected').remove();

这是HTML

<div id="product_categories">
<div class="category_block">
    <select name="category_ids[]" id="cat_list">
        <option  value="">Select Attribute</option>
        <option  value="1770">Foo0</option>
        <option  value="1773">Foo1</option>
        <option  value="1775">Foo2</option>
        <option  value="1765">Foo3</option>
        <option  value="1802">Foo4</option>
        <option  value="1766">Foo5</option>
    </select>
    <input class="specsinput" type="text" name="specs[]" value="" />
    <a href="#" onClick="return removeselect(this);" class="remove_cat"> [-] </a>
    <a href="#" onClick="return addselect(this);" class="add_cat"> [+] </a>
</div>

解决方法

您需要克隆正确的元素,为克隆设置选定的值,然后附加克隆.
function addselect(s){

        // Store the block in a variable
    var $block = $('#product_categories > .category_block:last');

        // Grab the selected value
    var theValue = $block.find(':selected').val();

        // Clone the block 
    var $clone = $block.clone();

        // Find the selected value in the clone,and remove
    $clone.find('option[value=' + theValue + ']').remove();

        // Append the clone
    $block.after($clone); 

    set_add_delete_links(); return false;
}

更新:修改为适合添加到问题的HTML.

请注意,正在克隆select元素的ID,这意味着您有2个具有相同ID的元素.这是不允许的.您需要删除ID,或将克隆中的ID更改为其他值.

在附加克隆之前,您可以执行以下操作:

// Grab the select in the clone
var $select = $clone.find('select');

    // Update its ID by concatenating theValue to the current ID
$select.attr('id',$select.attr('id') + theValue);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


jQuery表单验证提交:前台验证一(图文+视频)
jQuery表单验证提交:前台验证二(图文+视频)
jQuery如何实时监听获取input输入框的值
JQuery怎么判断元素是否存在
jQuery如何实现定时重定向
jquery如何获取复选框选中的值
jQuery如何清空form表单数据
jQuery怎么删除元素节点
JQuery怎么循环输出数组元素
jquery怎么实现点击刷新当前页面
怎么用jquery实现文字左右展开收缩效果
jquery怎么删除html属性
如何用jquery实现图片翻转效果
jquery怎么删除样式属性
jquery如何获取当前元素的位置
如何用jquery实现点击展开收缩效果
jquery怎么实现点击隐藏显示效果
jQuery如何获取当前页面url
jQuery怎么获取鼠标的位置坐标
简洁易懂的jQuery:HTML表单与jQuery