我有一個按鈕,單擊時將新的媒體項目添加到列表。我遇到的問題是它使用唯一的ID重複。我需要一種方法使它在ID上添加某種匿名號碼,因此它不會重複。或者我可以使用類和某種.each.closest方法將其綁定到正確的按鈕?獨特的ID和動態添加項目的棘手的情況
#replaceFeUpload和#replaceFileSelectUpload是在添加媒體項目時得到重複的ID。
HTML
<div class="add-carousel-item">
<div class="col-md-2">
<input type="file" class="fileElem pull-right" id="replaceFeUpload" multiple onchange="handleFiles(this.files)">
<button class="fileSelect pull-right" id="replaceFileSelectUpload">Select Media Item</button>
</div>
<div class="col-md-2">
<button class="fileSelect">submit</button>
<button class="btn btn-danger left-space remove-item">Remove</button>
</div>
</div>
JQuery的
$("p.add-carousel-item").on("click", function() {
$.get("/includes/add-carousel-item", function(response) {
$(".carousel-item-zone").append(response);
});
function click(el) {
// Simulate click on the element.
var evt = document.createEvent('Event');
evt.initEvent('click', true, true);
el.dispatchEvent(evt);
}
document.querySelector('#replaceFileSelectUpload').addEventListener('click', function (e) {
var fileInput = document.querySelector('#replacefeUpload');
//click(fileInput); // Simulate the click with a custom event.
fileInput.click(); // Or, use the native click() of the file input.
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#img-preview').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
$("#replacefeUpload").change(function() {
readURL(this);
});
}, false);
});
使用類或'data-something'屬性來存儲值。您無法在動態內容上使用重複的ID。你的點擊代對jQuery來說似乎是矯枉過正的...爲什麼不直接調用'click()'?你真的應該使用委託事件'.on('click',jqueryselector,function(){handler here});'和'on('change',' – 2014-09-02 15:43:47
我不知道你在說什麼 – ndesign11 2014-09-02 15:45:01
作爲評論是不足以涵蓋所有問題,我試圖在下面更詳細地解釋。如果你需要更多的細節,只需要問:) – 2014-09-02 15:57:45