Обернуть изображение в тег привязки только один раз

Я использую этот сценарий, чтобы автоматически обернуть изображение, загруженное тегом привязки, и добавить исходный файл изображения в href. Проблема заключается в том, что каждый раз, когда я редактирую свою страницу, он снова запускает сценарий, поэтому, если я редактирую страницу 20 раз, это добавило бы анкерный перенос 20 раз, мне нужно, чтобы он запускался только один раз ИЛИ обнаружил, что для изображения уже есть анкерный перенос тега, и не запустил скрипт.

    <script>
$('.lightbox img').each(function(){
    $(this).wrap(function() {
      return '<a href="' + $(this).attr('src') + '" />';
    })   
});
</script>

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

 <script>
$(".lightbox a").attr("data-toggle", "lightbox");
</script>

0 ответов

Используйте логическое значение в качестве глобальной переменной, например

var flag = true;

Теперь установите условие перед выполнением, как

if(flag){  
   $('.lightbox img').each(function(){
       $(this).wrap(function() {
         return '<a href="' + $(this).attr('src') + '" />';
       }) 

   });
  flag=false;    
  }

Поскольку вам нужно только один раз обернуть его, вам нужно выбрать только теги img, которые не обернуты в тег привязки, например

$('.lightbox img:not(a>img)').each(function(){
    $(this).wrap(function() {
        return '<a href="' + $(this).attr('src') + '" data-toggle="lightbox" />';
    })   
});
Другие вопросы по тегам