2012-04-05 6 views
0

Может кто-нибудь помочь мне решить эту проблему.jquery get element attibute value и create variable from

Я изменяю размер флеш-объекта/кода для встраивания в окно браузера с помощью jquery. См. HTML ниже.

HTML

<div id="prezi"> 

    <object id="prezi_3453246342644353463435463456435" width="1000" height="800"> 

      <embed width="1000" height="800" ></embed> 

    </object> 

</div> 

Jquery (это работает)

function preziresize() { 

    var $objectId =  $('#prezi_3453246342644353463435463456435'), 
     $objectEmbed = $objectId.find('embed'), 
     windowWidth =  $(window).width(), 
     windowHeight = $(window).height(); 

     $objectId.attr('height' , windowHeight).attr('width' , windowWidth); 

     $objectEmbed.attr('height' , windowHeight).attr('width' , windowWidth); 

} 

$(document).ready(function() { 

    preziresize(); 

}); 

$(window).resize(function() { 

    preziresize(); 

}); 


МОЯ ПРОБЛЕМА

Но падение сценария выше, это то, что я должен вручную поместить идентификатор моего объекта в свой скрипт. :(

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

function preziresize() { 

    var $objectId =  $('#prezi').attr('id'), 
     $objectEmbed = $objectId.find('embed'), 
     windowWidth = $(window).width(), 
     windowHeight = $(window).height(); 

     $objectId.attr('height' , windowHeight).attr('width' , windowWidth); 

     $objectEmbed.attr('height' , windowHeight).attr('width' , windowWidth); 

} 


Все указатели будет большое спасибо.

Джош

ответ

3

Редактировать: Вы должны лучше выполнить его и при изменении размера.

$(window).bind("resize.preziresize", function() { 
    $('div#prezi object') 
     .find('embed') 
     .andSelf() 
     .attr('height' , $(window).height()) 
     .attr('width' , $(window).width()); 
}).trigger("resize.preziresize"); 
+0

WOW - это намного проще, отличное мышление! Но как я могу заставить это работать над документом? Работает только при изменении размера окна. Спасибо – Joshc

+0

Хмммм, я добавил этот код в свой документ, но работает только при изменении размера окна. Если я завершу ваш код в документе, то он будет работать - – Joshc

2
var $object =  $('#prezi').find("object"), 
    $objectEmbed = $object.find('embed'), 
+0

Спасибо, что отлично поработали, не знаю, почему я этого не сделал. :-) – Joshc

-1

Этот код не имеет особого смысла, sinse $ ("# Prezi") означает, что вы уже знаете, что это идентификатор, это "Prezi". другая проблема с вашим кодом заключается в том, что $ objectId является строкой, а не объектом jQuery, поэтому вы не можете использовать .find на ней. Попробуйте следующее:

function preziresize() {  
    var $object =  $('#prezi object'), 
     $objectId =  $object.attr('id') 
     $objectEmbed = $object.find('embed'), 
     windowWidth = $(window).width(), 
     windowHeight = $(window).height(); 

     $object.attr('height' , windowHeight).attr('width' , windowWidth); 
     $objectEmbed.attr('height' , windowHeight).attr('width' , windowWidth); 
}