我开始用jQuery mobile创建一个待办事项列表,以便更好地学习它。我正在听这样菜单按钮发出的事件:
me.selectedTarget = me.menuNode.find(".ui-btn").first();
me.menuNode.on("click", ".ui-btn", function (e) {
var target = $(e.currentTarget)
,targetText = target.text();
console.debug("Click on'", targetText,"'" );
if(target === me.selectedTarget) return;
if(targetText == "View To Do "){
core.pub("view:todo");
} else if(targetText == "View Done ") {
core.pub("view:done");
} else {
me.selectedTarget.click();
}
me.selectedTarget = target;
});
由于某种原因,变量targetText在末尾有一个额外的“”空格。我有3个按钮,但第三个按钮有点特别 - 无论如何都不相关 - 。
我的问题是我总是在接受最后一个条款。 targetText永远不会等于“View To Do”或“View Done”。
为什么不“查看完成”==“查看完成”? 〜X(
答案 0 :(得分:11)
比较失败,因为字符串不相同。所以问题确实是为什么它们不一样?显然,其中一个字符串中的空格不是标准空格字符(Unicode有多个空格),或者其中一个字符串中有一个不可见的字符(Unicode也有这些字符)。
所以为了找出发生了什么,我会这样做:
var index;
for (index = 0; index < targetText.length; ++index) {
console.log("char " + index + ": " + targetText.charCodeAt(index));
}
...和代码中的字符串文字相同(不是重新输入它,而是将其移动到本地然后输出;因为如果你重新输入它,你可能会输入正常空间)。比较字符代码的序列,你会发现差异。