在asp.net/mvc5網站上工作。jQuery克隆 - 產生的克隆控件不起作用
我有一個彈出式模式對話框(MVC 5部分頁面),它應該用於數據表的高級過濾。我希望用戶能夠添加或刪除儘可能多的過濾「項目」/行。過濾器控件與「filter_row」類相連。這裏的情態機身碼....
<div class="modal-body" style="height: 300px;">
<div class="row filter_row">
<div class="col-lg-12">
<div class="checkbox i-checks inline-block">
<input type="checkbox" value="">
</div>
<select data-placeholder="Choose..." class="chosen-select" style="width: 150px;">
<option value="">First Name</option>
<option value="">Last Name</option>
<option value="">DOB</option>
<option value="">SSN</option>
<option value="">City</option>
<option value="">State</option>
<option value="">Zip</option>
<option value="">Account</option>
</select>
<input type="text" placeholder="" class="form-control inline-block" style="width: 200px;">
<a href="#" onclick="$(this).closest('.filter_row_clone').remove();"><i class="fa fa-trash" aria-hidden="true"></i></a>
</div>
</div>
</div>
當我點擊添加按鈕(+),該行應該被複制,它是。這部分工作正常。 (請參閱下圖,我點擊了(+)幾次。)問題是我無法點擊或使用任何克隆的控件。下面是截圖。在此屏幕截圖中,只有第1行是原始行,可點擊。
下面是在頭我的 「添加」 按鈕的代碼....
<a href="#" onclick="addRow();">
<i class="fa fa-plus-circle" aria-hidden="true"></i>
</a>
這裏的主要功能addRow ....(見下面的更新的代碼)
function addRow() {
$(".filter_row").clone(true, true).removeClass("filter_row").addClass("filter_row_clone").insertAfter("div.filter_row:last");
};
(我刪除了主要的「filter_row」類(克隆過程中)的原因是每次點擊按鈕時,第一次單擊後會添加太多的行)。
僅供參考:複選框使用iCheck插件,下拉使用選擇的插件。在主MVC部分頁面(模態)被調用的主父窗體上,我引用了必要的腳本和樣式。
謝謝!
**** **** UPDATE
所以,該部分網頁上面基本上是用來作爲模態彈出。 「父母」頁面包含此代碼。 (此代碼的工作和影響正確應用到插件,而不是克隆人。)
$('#AdvancedSearch')
.on('shown.bs.modal',
function (e) {
// the custom checkbox plugin
$('.i-checks').iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green'
});
// the "chosen" plugins
$(".chosen-select").chosen({
disable_search_threshold: 10,
no_results_text: "Oops, nothing found!"
});
});
使用下面的建議(感謝@StephenMuecke)這裏是我的新addRow()函數....
<script>
function addRow() {
$(".filter_row").clone(true, true).first().insertAfter("div.filter_row:last");
$('.chosen-select').last().chosen(
{
disable_search_threshold: 10,
no_results_text: "Oops, nothing found!"
}
);
$('.chosen-select').last().chosen();
$('.i-checks').last().iCheck({
checkboxClass: 'icheckbox_square-green',
radioClass: 'iradio_square-green'
});
};
</script>
對於克隆的控件,我現在可以使用除下拉列表外的所有克隆控件。當我點擊下拉列表的第一行上的原有開闢了......
你需要給有關原始HTML以及如何附加插件的更多信息。沒有理由改變類名 - 你可以只使用'$(「。filter_row」)。first()。clone();'但你還需要將插件附加到新創建的元素。 –
@StephenMuecke謝謝。爲你的.first()引用+1。謝謝!是否顯示覆選框和下拉菜單顯示插件已連接?我只是無法檢查複選框或從下拉列表中選擇。你可以說得更詳細點嗎?我將在上面的代碼中添加modalbody代碼。再次感謝! – WebDevGuy2
@StephenMuecke我刪除了複選框和下拉列表的插件類,我可以使用控件。所以這似乎是問題。那麼我怎樣才能「附加插件」? – WebDevGuy2