js jquery分别实现动态的文件上传操作按钮的添加和删除



// 使用纯JavaScript添加动态文件上传按钮
function addFileUploadButton(containerId) {
    const container = document.getElementById(containerId);
    if (!container) return;

    const input = document.createElement('input');
    input.type = 'file';
    input.name = 'fileToUpload';
    input.className = 'file-input';

    const button = document.createElement('button');
    button.textContent = 'Upload File';
    button.onclick = function() {
        input.click(); // 触发input的点击事件,以便用户可以选择文件
    };

    const wrapper = document.createElement('div');
    wrapper.appendChild(input);
    wrapper.appendChild(button);

    container.appendChild(wrapper);
}

// 使用纯JavaScript删除指定的文件上传按钮
function removeFileUploadButton(buttonId) {
    const button = document.getElementById(buttonId);
    if (!button) return;

    // 假设按钮是包裹在div里的,我们可以直接删除这个div
    const wrapper = button.parentElement;
    if (wrapper) {
        wrapper.parentElement.removeChild(wrapper);
    }
}

// 使用jQuery添加动态文件上传按钮(作为示例,推荐直接使用原生JS)
function addFileUploadButtonWithJQuery(containerSelector) {
    $(containerSelector).append(
        $('<div>')
        .append($('<input>', { type: 'file', name: 'fileToUpload', class: 'file-input' }))
        .append($('<button>', { text: 'Upload File', click: function() { $(this).prev().click(); } }))
    );
}

// 使用jQuery删除指定的文件上传按钮(假设按钮有特定的class或id)
function removeFileUploadButtonWithJQuery(buttonSelector) {
    $(buttonSelector).closest('div').remove(); // 假设按钮被包裹在div中
}

// 示例用法
// addFileUploadButton('myContainer');
// addFileUploadButtonWithJQuery('#myContainer');
// removeFileUploadButton('myButtonId');
// removeFileUploadButtonWithJQuery('.myButtonClass');

**注意**:

- 我提供了原生JavaScript和jQuery两种实现方式,但通常推荐使用原生JavaScript,因为它不需要外部库且性能更好。

- 在`removeFileUploadButton`和`removeFileUploadButtonWithJQuery`函数中,我假设每个上传按钮都被包裹在一个`div`元素中,以便于删除。如果实际情况不是这样,你需要根据实际情况调整选择器或逻辑。

- `addFileUploadButtonWithJQuery`中的`click`事件处理器里,我使用了`$(this).prev().click();`来模拟点击`input`元素,这是因为直接触发`input[type='file']`的点击在某些浏览器中可能不起作用,特别是出于安全考虑。但请注意,这种方法可能在某些情况下也不可靠,具体取决于浏览器的实现和策略。如果这种方法不起作用,你可能需要寻找其他解决方案,如使用隐藏的`input`元素和可见的按钮,并通过JavaScript来控制它们的交互。