2013-12-08 2 views
1

У меня возникли проблемы с js внутри мой bs3 modals - он не работает. Я открываю модалы с помощью ajax.js не работает в bs3 ajax modal

главную страницу

<a href="/modals/comp_activate.php" data-target="#modal-ajax" data-toggle="modal"><i class="fa fa-plus-circle"></i> Activate this computer</a>'; 

<div class="modal fade" id="modal-ajax" tabindex="-1" role="basic" aria-hidden="true"> 
    <img src="/assets/img/ajax-modal-loading.gif" alt="" class="loading"> 
</div> 

<script src="/assets/scripts/custom/custom.js" type="text/javascript"></script> 
<script> 
    jQuery(document).ready(function() {  
     Custom.init(); 
    }); 
</script> 

custom.js

var Custom = function() { 

// private functions & variables 

// external window links 
var externalWindows = function() { 
    $("a[data-window='external']").on('click', function() { 
     window.open($(this).attr('href')); 
     return false; 
    }); 
} 

// public functions 
return { 

    //main function 
    init: function() { 
     //initialize something here 
     externalWindows(); // external window links 
    } 

}; 

}(); 

ссылке в модальной странице

<a class="btn btn-primary" href="http://www.somesite.com/" data-window="external" onClick="$('#modal-ajax').modal('hide');"><i class="fa fa-shopping-cart"></i> Purchase Now</a> 

Все это открывает любую ссылку с data-window="external" в новом окне браузера. Поскольку модальная страница открывается с помощью ajax, js с главной страницы не «подбирает» ее при загрузке. Я также могу добавить эту функцию на мою модную страницу, но затем она вызывает проблемы с главной страницей.

Что я могу сделать здесь?

ответ

1

Вы можете использовать event delegation так, чтобы динамически загружаемые ссылки вызвать обработчик:

var externalWindows = function() { 
    function openWindow() { 
     window.open($(this).attr('href')); 
     return false; 
    } 

    $("a[data-window='external").click(openWindow); 
    $("#modal-ajax").on('click', "a[data-window='external']", openWindow); 
}; 
+0

Это работало ... Я добавил еще одна функции в моем custom.js файл с '\t варом externalWindows2 = функция() { \t \t $ ("# modal-ajax"). On ('click', 'a data-window =' external '] ", function() { \t \t window.open ($ (this) .attr (' href ')); \t \t return false; \t \t}); \t} 'Это единственный способ? Это означает, что каждый js, который я хочу использовать в удаленных модулях, тоже понадобится. – user756659

+0

@ user756659 нет, нет необходимости в второй функции, просто измените ту, что у вас есть для той, которую я разместил, все должно нормально работать –

+0

Ну, мне нужно, чтобы она работала на всех страницах ... не только модальные, но и «с» ajax модальности. – user756659

Смежные вопросы