jQuery colorbox - получить параметр URL по нажатой ссылке - PullRequest
1 голос
/ 01 ноября 2010

Я использую Colorbox для загрузки контактной формы в iframe.

Однако я хочу, чтобы URL-адрес Colorbox отличался от html, чтобы отображать другую страницу контактов для JS и не-JSпользователи.

Мне действительно нужно получить параметр url из точно нажатой ссылки.

HTML-код:

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

Код цвета:

$(document).ready(function(){

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

});

Где 'contact' - это страница, отличная от JS, а 'colorboxcontact' - это страница, которая должна быть загружена в iframe Colorbox.

Как извлечь параметр url из ссылки clicked ,а затем добавить его к значению href 'colorboxcontact' в моем вызове jQuery?

* РЕДАКТИРОВАТЬ *

Хорошо, я пришел к следующему, но все еще непусть это работает.Кто-нибудь может указать, где я иду не так?

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

Ответы [ 3 ]

2 голосов
/ 09 ноября 2010

Чтобы получить конкретную информацию о строке запроса для строки URL, вам нужно, чтобы эта функция находилась по адресу:

Как получить значения строки запроса в 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 голос
/ 10 мая 2013

Я думаю, что, возможно, простым подходом было бы установить href для функции, которая возвращает ссылку.

$(document).ready(function(){
    $('.enquiryForm').colorbox({
        height:600, 
        width:800, 
        iframe:true, 
        href: function(){
            return $(this).attr('href');
        }
    });
});
1 голос
/ 01 ноября 2010

Используйте .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 });
  });
});
...