【发布时间】:2017-03-28 16:39:51
【问题描述】:
我写了一个方法如下:
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 小部件工厂。它指的是小部件实例所附加的 DOM 元素。
【问题讨论】:
-
顺便问一下,这种多返回点模式在 Javascript 中被认为是不好的做法吗?
-
多个返回点是完全可以接受的,但它在嵌套函数内部不起作用。您的
"contain_conflict"不是从外部函数返回,而是从您创建的内部函数返回。 -
.each()唯一使用返回值的就是决定是否继续循环。如果您返回false,则循环停止,否则继续。 -
它返回
no_conflict的唯一时间是existing_filenames为空。当length > 0时,返回undefined。 -
console.log() 是你的朋友,看看为什么支票永远无效。好像
var existing_filenames = this.element.find('ul.existing_files > li');正在返回 0 个项目
标签: javascript jquery return