如何根据ID删除一些项目

时间:2016-06-24 06:29:11

标签: javascript jquery

我通过以下代码获取所有文件上传控件

   var fileuploadControls = $( "input[type='file']" );

现在我想循环遍历fileuploadControls并删除如果ID不匹配此类

for(var i=0;i<fileuploadControls .length;++i)
 {
       if(fileuploadControls[i].id != "A")
        {
          //remove the item and fileUploadcontrols should be same type of abject as returned by the jquery not an array
         }

 }

我已经尝试过拼接它可以工作,但它返回一个数组,我不想要在删除项目后,fileuploadControls应该是与删除之前相同类型的对象,只有一个项目应该更少

有人可以帮助编码吗

我在Angular ui-grid中使用以下celltemplate

 cellTemplate: '<div class="ui-grid-cell-contents"> <input name="curfewRegularizationFile"  id="curfewRegularizationFile" type="file" class="k-state-disabled"  /></div>',

在javascript文件中我正在做这个

  fileuploadControls[i].kendoUpload({ // Do something as per kendo}); 

2 个答案:

答案 0 :(得分:0)

从DOM中删除:

在你的循环中你可以这样做:

for(var i = 0; i < fileuploadControls.length; ++i ) {
    if( fileuploadControls[i].id !== "A" )
        fileuploadControls.eq(i).remove();
}

但是我会以jQuery方式完成它,在使用jQuery对象的循环中,你可以使用each来完成它。但这甚至是选择最慢的选择。

fileuploadControls.each(function() {
    if( $(this).attr("id") !== "A" )
        $(this).remove();
});

或直接作为子选择器:

fileuploadControls.not("#A").remove();

仅从对象中删除

通过更好的初始选择器:

var fileuploadControls = $("input[type=file]:not(#A)");

通过修剪jQuery对象:

fileuploadControls = fileuploadControls.not("#A");

通过过滤器:

fileuploadControls =  fileuploadControls.filter(function() {
    return $(this).attr("id") !== "A";
});

答案 1 :(得分:0)

您可以创建一个删除元素的功能

for(var i=0;i<fileuploadControls .length;++i)
 {
       if(fileuploadControls[i].id != "A")
        {
            remove(fileuploadControls[i].id);
        }

 }

function remove(id) {
    return (el=document.getElementById(id)).parentNode.removeChild(el);
}