Jquery过滤器URL

时间:2010-11-07 01:09:52

标签: jquery url filter

我认为我走在正确的轨道上,但我需要你的帮助。

我使用此代码获取我的网址参数

 function $urlParam(name){ 
    if(window.location.href.indexOf(name) != -1) {
        var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href); 
        return results[1] || 0; 
    }
    return 0;

} 


$(function() {
var $page='#'+$urlParam('id');

 });

而不是我试图用

过滤这些数据
$side_menu.find('> li > a').filter($page).click();

但这不起作用。

我有什么可以做的,所以我可以用$ page变量过滤数据吗?

如果您需要更多数据,我很乐意为您提供。

提前谢谢你, Prokka

3 个答案:

答案 0 :(得分:0)

好的,先关闭,而不是:

window.location.href

你不妨使用:

window.location.search

因为它只是URL的参数部分(您想要的部分)。另外,你的变量:

$page

...“$ foo”变量命名约定通常适用于jQuery对象变量。换句话说:

var foo = "foo";
var $foo = $(foo);

所以(除非你有自己的,不同的约定)我认为“$ page”应该真正命名为page。

至于:

$side_menu.find('> li > a').filter($page).click();

我无法确定,但看起来你正在过滤id。那是对的吗?如果是这样,过滤器毫无意义;根据定义,ID在页面上是唯一的,所以只需执行:

$($page).click();

完全相同(甚至是表现方面)。

  
    

但这不起作用。     有什么我能做的,所以我可以用$ page变量过滤数据吗?

  

在不知道页面变量值的情况下,很难说。我建议添加这个:

console.log($page);
$side_menu.find('> li > a').filter($page).click();

好吧,如果您使用Firebug或带控制台的浏览器(如果不是......您应该使用Firebug ;-)但您也可以将其更改为“alert($ page)”)。

当你这样做时,你应该看到你真正使用的选择器。最有可能出现问题。如果您没有看到任何明显的内容,请尝试添加:

console.log($page); console.log($($page));
$side_menu.find('> li > a').filter($page).click();

(警告技巧不适用于此)。这应该显示使用选择器选择的jQuery元素(如果有的话)。在这个和查看选择器本身之间,你可能会发现问题(如果你不这样做,也许可以尝试在Firebug控制台中手动运行命令)

答案 1 :(得分:0)

类似的东西:

<script>
// Define event handler generator
function handleClick(url) {
    var location = url;
    return function() {
        window.location = location;
        return false;
    }
}
$(function () { // onReady
    $("A").each(function() { // connect an event handler for every A
        // Generate handler for the correct URL
        var handler = handleClick($(this).attr("href"));
        // Connect generated event handler
        $(this).click(handler);
    });
}
</script>

应该让你保持现有的URL按照他们已经做的方式工作(对于非JS用户),但是对于其他人你将会触发一个事件,它做同样的事情,但是jQuery-invoke-able

答案 2 :(得分:0)

非常感谢你们!

最后我找出了我的错误......我在页面加载后定义了页面变量,因此我的脚本无法读取。

现在看起来像这样:

     function $urlParam(name){ 
    if(window.location.href.indexOf(name) != -1) {
        var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href); 
        return results[1] || 0; 
    }
    return 0;


};

之后

var page='#'+$urlParam('id');
if (page== '#0')
     strana ='#News';


$side_menu.find('> li > a').filter($(page)).click();

现在几乎一切都很好,除了谷歌浏览器,它只选择标签但不显示内容。我在这里阅读jQuery find() returning an empty string in Google Chrome,它是关于Ajax中的Chrome和HTML。

此链接或链接的任何提示或提出其他问题?

再次感谢你们,特别是机器人!