2015-07-20 3 views
1

Я пытаюсь добавить класс к элементу iframe (в том же домене), но здесь рассмотрю некоторые из этих проблем и придумал решение.jquery iframe item selector не работает

IFrame находится рядом с тегом тела, а js - перед тегом конца тела.

<script> 
$(document).ready(function() { 
    $('#my-iframe').contents().find('#mnucompany').addClass('is-active');  
    console.log('ok'); 
}); 
</script> 

В консоли отсутствует ошибка, кроме журнала ОК, но класс не добавлялся к #mnucompany.

Что еще может быть неправильным? Любые большие намеки будут оценены.

+1

Являются Iframe и сайт на том же домене? –

+0

Да его в том же домене. IFrame содержит раздел заголовка страницы с логотипами и меню. –

+0

Дамп здесь результат '$ ('# my-iframe'). Length' и' $ ('# my-iframe'). Contents(). Find ('# mnucompany'). Length' –

ответ

1

После наших комментариев:

Вы должны подождать, когда загрузится iframe!

$(document).ready(function() { 
$('#my-iframe').on('load',function(){ 
    $('#my-iframe').contents().find('#mnucompany').addClass('is-active');  
    console.log('ok'); 
}); 
}); 
+0

Довольно странно, потому что существует идентификатор элемента. \t

\t \t \t

+0

@ Jonathan.B Что является результатом этого кода: 'alert ($ ('# my-iframe'). Contents(). Find (" [id = mnucompany] ")' –

+0

говорит [object Object], может быть null. –

0
$(document).ready(function() { 
     var myVar = setTimeout(function() { 
      var $mnuCompany = $('#my-iframe').contents().find('#mnucompany'); 
      if($mnuCompany.length>0){ 
       $('#my-iframe').contents().find('#mnucompany').addClass('is-active');  
       console.log('ok'); 
       clearTimeout(myVar); 
      } 
     }); 
    }, 1500); 
+0

Хотя ошибки не было, код также не влияет. –

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