0

我有这个代码:

var mods1 = ['a', 'b', 'c', 'd'];
var mods2 = ['1', '2', '3', '4'];
var mods3 = ['js', 'hates', 'me', ':('];


jQuery('div').append('<ul class="modlist"></ul>');
jQuery.each(mods1, function(i) {
    jQuery('<li/>').html(mods1[i]).appendTo('.modlist');
});

我需要根据使用此脚本的 URL 使用不同的变量(mods1、modsN、...)。

URL 始终具有相同的结构:

http://www.example.com/NUMBER/
http://www.example.com/NUMBER/example/
http://www.example.com/NUMBER/example/example

“数字”部分是我可以用来区分页面的部分。

jsFiddle 运行我的示例代码:http: //jsfiddle.net/RZHxz/

4

4 回答 4

2

只需解析window.location

var url = location.pathname.substr(1),
    arr_url = url.split('/'),
    NUM = arr_url[0];

或者,如果您希望代码更紧凑:

var NUM = location.pathname.substr(1).split('/')[0];
于 2012-10-31T15:53:20.127 回答
2

试试这个:

var url = "/1/example"; // location.pathname
var id = url.split("/")[1];

mods = [
    ['a', 'b', 'c', 'd'],
    ['1', '2', '3', '4'],
    ['js', 'hates', 'me', ':(']
];

jQuery('div').append('<ul class="modlist"></ul>');
jQuery.each(mods[id], function(i,v) {
    jQuery('<li/>').html(v).appendTo('.modlist');
});

我已经把它mods变成了一个数组,因为这就是你有效地访问它们的方式,而且,该each()函数将值作为参数传递给处理函数,所以你不需要再次进入数组。

示例小提琴

于 2012-10-31T15:58:23.657 回答
1

假设所有mods变量都在公共mods对象中并且mods1默认使用:

var mods = {
    mods1: ['a', 'b', 'c', 'd'],
    mods2: ['1', '2', '3', '4'],
    mods3: ['js', 'hates', 'me', ':(']
};

var key = "mods" + (/^\/(\d+)/.exec(location.pathname) || [,1])[1];
$.each(mods[key], function(i) {
    // ...
});
于 2012-10-31T15:55:50.657 回答
1

如果您确定该号码会在那里,您可以像这样轻松获得它:

var urlNumber = parseInt(location.pathname.substr(1),10); // always use a radix
//or, if the number needn't be there
var urlNumber = (location.pathname.match(/^\/([0-9]+)\//) || ['no','number'])[1];

如果它在 url 中,则第二个返回数字,或者number如果它不在

于 2012-10-31T16:02:09.907 回答