![](/img/trans.png)
[英]How can I set the order of jQuery functions so that one triggers after the other finishes rendering content?
[英]How can I make a function return true after functions within jQuery's .each() finishes?
我正在使用knockout.js。 我在表單中有幾個可編輯的網格,這些網格中的字段名稱很重要,因此使用uniqueName
不是一個選項。
所以我正在做的是在用戶點擊提交時調用一個函數來重命名字段。
function renameFields(o, index) {
var el_name = $(o).attr('name');
var name_index = el_name.lastIndexOf('_') + 1;
$(o).attr('name', el_name.substring(0, name_index) + index);
}
function Submit() {
self.submit = function() {
// Use unique AND meaningful input/textarea [name]s in .grids.
window.index_arr = [];
$('.grid').each(function() {
$(this)
.children('.row')
.each(function(i){
window.index_arr.push(i);
$(this)
.find('input, textarea')
.each(function() {
renameFields($(this), window.index_arr[i]);
})
})
});
// Submit the form
return true;
}
}
renameFields
工作正常,但在每個字段調用之前返回true
。
讓Knockout做一些骯臟的工作,讓你的屬性索引保持最新,如下所示:
HTML:
<div id="grid" class="grid">
<div class="row" data-bind="foreach:rows">
<input data-bind="attr: { name: 'string_' + $index() }">
<textarea data-bind="attr: { name: 'string_' + $index() }">
</div>
</div>
查看型號:
var vm = {
rows: ko.observableArray()
};
ko.applyBindings(vm, document.getElementById("grid"));
請告訴我們您如何設置點擊處理程序的更多信息......
我會帶一個SWAG ...我想你正在處理吊裝
沒有小提琴我無法測試它,但請嘗試以下代碼。
var renameFields = function(o, index) {
var el_name = $(o).attr('name');
var name_index = el_name.lastIndexOf('_') + 1;
$(o).attr('name', el_name.substring(0, name_index) + index);
}
var Submit = function() {
self.submit = function() {
// Use unique AND meaningful input/textarea [name]s in .grids.
window.index_arr = [];
$('.grid').each(function() {
$(this)
.children('.row')
.each(function(i){
window.index_arr.push(i);
$(this)
.find('input, textarea')
.each(function() {
renameFields($(this), window.index_arr[i]);
})
})
});
// Submit the form
return true;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.