繁体   English   中英

如何从click事件对象获取链接的href属性的参数

[英]How to get the parameters of an href attribute of a link from the click event object

有没有一种简单的方法可以使用click事件对象在单击链接的href属性的末尾获取参数?

我有一些看起来像这样的jQuery代码:

$(document).ready(function() {
    $('#pages').delegate("a", "click", function(e) {
        var formData = "parameters to clicked link";
        $.ajax({
            url: 'friends2.php',
            dataType: 'json',
            data: formData,
            success: function(data) {
                $('#searchbutton').attr("disabled", false);
                $('#searchresults').html(data.results);
                $('#pages').html(data.paginate);
            }
        });//ajax end
        return false;
    });
});

这是相关的HTML:

<div id="pages">
<span class="disabled">previous</span>
<span class="current">1</span>
<a href="friends.php?term=ma&p=2">2</a>
</div>

我正在尝试做的是对我用ajax完成的搜索结果进行分页。 搜索运行正常,并获得与查询匹配的用户列表。 创建分页链接的结果脚本部分也正常工作。

在上面的示例中,有两页结果。 当用户单击链接转到结果的第2页时,我想要做的是截取链接点击,而是使用term=ma&p=2作为传递给请求的数据创建新的ajax请求。

所以,长话短说,是否有一种简单的方法可以从事件对象中获取term=ma&p=2传递上面jQuery中的匿名函数?

您可以使用this.href方法来读取link属性:

$('#pages').delegate("a", "click", function(e) {
   var str = this.href.split('?')[1];

例:

str = 'friends.php?term=ma&p=2';
console.log(str.split('?')[1]); // output: term=ma&p=2

是的,您可以使用链接的.search属性...

alert( this.search );

演示: http //jsfiddle.net/sHqmF/


要摆脱? ,只是.slice()它......

this.search.slice(1)

演示: http //jsfiddle.net/sHqmF/1/

给出一个锚点,开发Sarfraz答案

<a class="the_link" href="http://www.example.com/?a=1&date=2014-7-30&cat=all">click here</a>

您可以获取查询参数

jQuery(document).ready(function($) {
  $('a.the_link').click(function(){    // when clicking on the link
    var href = $(this).attr('href');   // get the href of the anchor
    var params = get_params_from_href(href);
    console.log(params);               // OUTPUT: [a: "1", date: "2014-7-30", cat: "all"] 
    return false;                      // optional. do not navigate to href.
  });

  function get_params_from_href(href){
    var paramstr = href.split('?')[1];        // get what's after '?' in the href
    var paramsarr = paramstr.split('&');      // get all key-value items
    var params = Array();
    for (var i = 0; i < paramsarr.length; i++) {
        var tmparr = paramsarr[i].split('='); // split key from value
        params[tmparr[0]] = tmparr[1];        // sort them in a arr[key] = value way
    }
    return params;
  }
}

jQuery本身不支持URL解析。 但是,有许多jQuery扩展可用,这使得这很容易。 例如

使用此扩展程序,您可以执行以下操作

$('#pages').delegate("a", "click", function(e) {
  var href = $(this).attr('href');
  var url = $.url(href);
  var query = url.attr('query')
  ...
});

扩展本身不仅仅支持查询字符串。 您可以将attr用于网址的几乎每个部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM