我写的方法如下:为什么这段代码总是返回“no_conflict”?
detectNameConflict: function() {
var existing_filenames = this.element.find('ul.existing_files > li');
if (existing_filenames.length > 0) {
var try_name = this.element.find('div.target_filename').text().trim();
existing_filenames.each(function(index, el) {
if ($(el).text() == try_name) {
return "contain_conflict";
}
});
} else {
return "no_conflict";
}
},
此代码不能正常工作,因为它总是回报“no_conflict”,即使有一个命名冲突。
说明:this.element
来自jQueryUI Widget工厂。它指向附加了窗口小部件实例的DOM元素。
顺便说一句,是在Javascript认为是不好的实践中,这种多重返回点的图案? –
多个返回点是完全可以接受的,但它在嵌套函数中不起作用。你的''contains_conflict''不是从外部函数返回的,它是从你创建的内部函数返回的。 – 4castle
.each()使用返回值唯一决定是否继续循环。如果你返回'false'循环停止,否则它继续。 – Barmar