jquery изменить расширение href onclick - PullRequest
0 голосов
/ 02 ноября 2010

Я стараюсь, чтобы мое приложение работало, даже если у пользователя нет js, и я заметил, что мой лайтбокс не работает с Ajax в старом браузере, и пытался это исправить, но не был уверенКак обойти это.

У меня есть ссылка с классом

<a href="/blah/1234", class="modal">Blah</a>

, но мне нужно указать лайтбоксу использовать расширение href + .js, если оно работает.Таким образом, если у пользователя нет js или он по какой-либо причине сломается, он отправит их на резервную страницу и будет вести себя нормально.

    $('.modal').lightbox({
            'width'       : 465,
            'height'      : 375,
            'autoresize'  : false,
            'modal'       : true
    });

В лайтбоксе нет атрибута href, который я мог бы найти, чтобы изменить егособственный параметр, поэтому я попытался сделать это заранее, но немного беспорядочно.

Это плохо работает, но ломается после того, как они щелкают по нему один раз, так как каждый раз добавляет .js.

$('.modal').bind('click', function() {
    $('.modal').attr("href", $('.modal').attr("href") + '.js');
    $('.modal').lightbox({
            'width'       : 465,
            'height'      : 375,
            'autoresize'  : false,
            'modal'       : true
    });
});

КакМогу ли я изменить расширение более просто перед вызовом лайтбокса?

1 Ответ

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

Вы можете использовать функцию с .attr(), чтобы проверить, заканчивается ли она уже на .js, например:

$('.modal').attr("href", function(i, href) {
  return href + (href.slice(-3) == '.js' ? '' : '.js');
});

Или сделайте это со всеми ссылками на ready, например:

$('.modal').attr('href', function(i, href) {
  return href + '.js';
}).lightbox({
  'width'       : 465,
  'height'      : 375,
  'autoresize'  : false,
  'modal'       : true
});
...