3

我目前正在研究一个简单的 ipad webapp 测试件,并陷入了一个无法以某种方式工作的简单 switch 语句;我想根据 javascripts window.location 字符串格式化元素。解决起来可能很尴尬;但我不知何故不明白:或者window.location有什么特别之处吗?

$(document).ready(function() {
path_c = window.location;
switch (path_c){
    case "http://192.168.1.37/ryba_testground/":
    $('#menu-item-22').addClass('current_page_item');
    alert(path_c);
    break;
    case "http://192.168.1.37/ryba_testground/?page_id=7":
    $('#menu-item-21').addClass('current_page_item');
    break; 
    case "http://192.168.1.37/ryba_testground/?page_id=9":
    $('#menu-item-20').addClass('current_page_item');
    break;
    case "http://192.168.1.37/ryba_testground/?page_id=11":
    $('#menu-item-19').addClass('current_page_item');
    break;
}
});

谢谢!

4

5 回答 5

3

或者window.location有什么特别之处吗?

它是一个宿主对象,有时表现得不可预测。至少,它是一个在转换为字符串时评估为的对象- 但是在与-caseshref比较时不会发生这种情况。switch利用

var path_c = window.location.href;
于 2013-01-17T10:43:38.920 回答
2

window.location 返回一个 Location 对象,该对象包含有关文档 URL 的信息并提供更改该 URL 的方法。所以改成:

var path_c = window.location.href;
于 2013-01-17T10:42:13.423 回答
0

我认为您想要对象的href属性window.location

path_c = window.location.href;

完整脚本

$(document).ready(function() {
    path_c = window.location.href;

    switch (path_c){
        case "http://192.168.1.37/ryba_testground/":
        $('#menu-item-22').addClass('current_page_item');
        alert(path_c);
        break;
        case "http://192.168.1.37/ryba_testground/?page_id=7":
        $('#menu-item-21').addClass('current_page_item');
        break; 
        case "http://192.168.1.37/ryba_testground/?page_id=9":
        $('#menu-item-20').addClass('current_page_item');
        break;
        case "http://192.168.1.37/ryba_testground/?page_id=11":
        $('#menu-item-19').addClass('current_page_item');
        break;
    }
});

示例:http: //jsfiddle.net/9vjY9/

于 2013-01-17T10:42:08.487 回答
0

代码似乎没问题。尝试alert (window.location.href)or console.log(window.location.href),然后您可以准确检查 window.location.href 为您测试的每个页面获取的内容。这可能会揭示问题。

于 2013-01-17T10:42:53.123 回答
0

您可以使用window.location.toString()or window.location.href,您甚至可以避免使用 switch,使用对象映射和正则表达式来过滤 url 中的目标:

var page_idMap = {
    '7': '#menu-item-21',
    '9': '#menu-item-20',
    '11': '#menu-item-19'
}
var id = window.location.href.match(/page_id[=]([0-9]+)/i);
if (!id || !page_idMap(id[1])) {
    $('#menu-item-22').addClass('current_page_item');
} else {
    $(page_idMap[id[1]]).addClass('current_page_item');
}
于 2013-01-17T10:43:14.467 回答