2010-11-02 2 views
0

Я пытаюсь сохранить свое приложение, даже если у пользователя нет js, и я заметил, что мой лайтбокс не работал с ajax добротой на старом браулере и пытался его исправить но не был уверен, как обойти это.jquery изменить расширение href onclick

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

<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 
    }); 
}); 

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

ответ

2

Вы можете использовать функцию с .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 
}); 
Смежные вопросы