jQuery colorbox - 从点击的链接中获取url参数

时间:2010-11-01 12:24:21

标签: jquery url href parameter-passing colorbox

我正在使用Colorbox在iframe中加载联系表单。

但是,我希望Colorbox网址与html网址不同,以便为JS和非JS用户提供不同的联系页面。

我确实需要从确切的点击链接中获取url参数。

HTML代码:

<a href="contact?id=XX" class="enquiryForm">

Colorbox代码:

$(document).ready(function(){

$('.enquiryForm').colorbox({height:600, width:800, iframe:true, href: 'colorboxcontact?id=XX'});

});

其中'contact'是非JS页面,'colorboxcontact'是要在Colorbox iframe中加载的页面。

如何从点击的链接中提取url参数,然后将其添加到我的jQuery调用中的'colorboxcontact'href值?

*编辑*

好的我已经到了以下但仍然没有工作。谁能指出我哪里出错?

$('.enquiryForm').colorbox({
    height:600, 
    width:800, 
    iframe:true, 
      href: $('.enquiryForm').each(function() {
        newhref = 'colorboxcontact' + $(this).attr('href').split("?")[3];
        $(this).attr('href', newhref);
    });
  });

3 个答案:

答案 0 :(得分:2)

要获取url字符串的特定查询字符串信息,您需要在以下位置找到此函数:

How can I get query string values in JavaScript?

略有修改:

function getParameterByName(url, name)
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec(url);
  if( results == null )
    return "";
  else
    return decodeURIComponent(results[1].replace(/\+/g, " "));
}

所以你最终会得到这样的东西:

$('.dialog-open').each(function() {
   $(this).colorbox({
     height: 600, 
     width: 800, 
     iframe: true, 
     href: "contact?id=" + getParameterByName($(this).attr("href"), "id")
   });
});

答案 1 :(得分:1)

使用.each()获取值,如下所示:

$(document).ready(function(){
  $('.enquiryForm').each(function() {
    $(this).colorbox({
      height: 600, 
      width: 800, 
      iframe: true, 
      href: $(this).attr("href")
    });
  });
});

.each()允许您通过<a>循环访问每个this。如果您不在乎它是否是完全限定的URL,您可以将$(this).attr("href")替换为this.href(IE将完全符合此条件),如下所示:

$(function(){
  $('.enquiryForm').each(function() {
    $(this).colorbox({ height: 600, width: 800, iframe: true, href: this.href });
  });
});

答案 2 :(得分:1)

我想也许一个简单的方法是将href设置为返回链接的函数。

$(document).ready(function(){
    $('.enquiryForm').colorbox({
        height:600, 
        width:800, 
        iframe:true, 
        href: function(){
            return $(this).attr('href');
        }
    });
});