0

我一直在google en SO上搜索这个,我得到了我想从url获取查询参数的功能(链接到文章)。
但是我找不到我的问题的答案,我非常肯定的是它应该很容易解决,我什至觉得问起来很愚蠢,但我就是找不到这个具体的答案。

当我单击一个链接并在 jquery 中捕获该单击时,该函数返回 false(我不想要刷新),因此我想要的参数不会被解析为 url。我怎么得到这些?

CURRENT URL: index.php?page=search&action=searchAll
<h4 class="videoLink"><a href="index.php?page=search&amp;action=playVideo&amp;isAjax=true&amp;v={$result.link}" class="{$result.link}">{$result.title}</a></h4>

简化的 jQuery

$('.videoLink').click(playVideo);  

function playVideo(){
   url = getUrlVars();
   return false;
}

function getUrlVars(){
   var vars = [], hash;
   var hashes = window.location.href.slice(window.location.href.indexOf('?')+1).split('&');

   for(var i = 0; i < hashes.length; i++){
       hash = hashes[i].split('=');
       vars.push(hash[0]);
       vars[hash[0]] = hash[1];
   }
return vars;
}

所以当我跟踪 url 时,我只得到参数:page & action

4

1 回答 1

0

在返回之前,false您可以获得链接并提取参数..

$('a').click(function(e){

    var href = this.href;
    var params = {};
    // remove the part of the href up to the first ? character
    // and then split the remaining at the & character
    // loop the resulting list of somekey=somevalue
    // and split at the = and store in the params variable
    $.each(href.replace(/^.*?\?/gi,'').split('&'), function(i,val){
        var parts = val.split('=');
        params[parts[0]] = decodeURIComponent(parts[1]);
    });

    // do what you want with the params here

    return false;
});

更新

如果您希望您的代码与浏览器位置以及传递给它的自定义 url 一起使用,您可以将其更改为

function getUrlVars(href){
   var vars = [], 
       hash,
       url = href || window.location.href;

   var hashes = url.slice(url.indexOf('?')+1).split('&');

   for(var i = 0; i < hashes.length; i++){
       hash = hashes[i].split('=');
       vars.push(hash[0]);
       vars[hash[0]] = hash[1];
   }
return vars;
}

并这样称呼它

function playVideo(){
   url = getUrlVars(this.href);
   return false;
}
于 2012-10-26T18:30:01.587 回答