Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 克隆一个而没有一个_Javascript_Jquery - Fatal编程技术网

Javascript 克隆一个而没有一个

Javascript 克隆一个而没有一个,javascript,jquery,Javascript,Jquery,我有一个选择框,里面有所有欧洲国家,意思是一个人选择一个或多个他/她在其中开展业务的国家 这就是它现在的样子: 这是javascript函数: function AddCountry(element) { var oldSelect = jQuery("select[name='investor-country[]']").last(); var newSelect = jQuery(oldSelect).clone(); jQuery(element).before

我有一个选择框,里面有所有欧洲国家,意思是一个人选择一个或多个他/她在其中开展业务的国家

这就是它现在的样子:

这是javascript函数:

function AddCountry(element) {

    var oldSelect = jQuery("select[name='investor-country[]']").last();
    var newSelect = jQuery(oldSelect).clone();

    jQuery(element).before(newSelect);
}
因此,当用户单击addcountry链接时,会执行javascript,并在链接上方插入另一个javascript。链接也是要发送的参数。这是前一张的复制品。问题是,我希望它从列表中删除以前选择的公司,这样用户就不能在没有HTML知识的情况下进入两个相同的国家

我试了很多,但没有成功。我尝试了各种奇怪的jQuery组合,但主要是:

newSelect.remove(0);

据我所知,这应该会从列表中删除第一个选项。0可以稍后替换为selectedIndex,但它不会

删除所选选项的另一种方法:

function AddCountry(element) {

    var oldSelect = jQuery("select[name='investor-country[]']").last();
    var newSelect = jQuery(oldSelect).clone();

    // Remove previously selected option
    var selected = oldSelect.val();
    newSelect.find("option[value="+selected+"]").remove();

    jQuery(element).before(newSelect);
}
newSelect.find('option').eq(oldSelect[0].selectedIndex).remove();
试试这个:

    //get the selected value
    var val = $("select[name='investor-country[]']").val();
    //get the selected option
    var option = $("option[value="+val+"]");
    //append the selected country somewhere
    $('#selected').append('<span>'+option.text()+'</span> ');
    //remove the selected option
    option.remove();

你不能用哦,是的,我忘了,这个设计不合适。。所以,是的,不。工作完美!为什么需要.find?你可以用.children来代替。但是您需要一些函数来使用选择器查找选项。是的,我注意到newSelect.children[oldSelect.selectedIndex].remove;由于某种原因,无法找到selectedIndex,因此无法工作。该索引应为newSelect.children.eqoldSelect.selectedIndex.remove。使用数组索引返回DOM元素,而不是jQuery对象。实际上,它应该是:newSelect.children.eqoldSelect[0]。selectedIndex.remove。oldSelect是一个jQuery对象。selectedIndex是DOM元素的属性。newSelect[0]应该是oldSelect[0]。