#jquery #html
#jquery #HTML
Вопрос:
Я создал несколько разделов, используя цикл, а затем внутри него есть скрытое поле, значение которого является URL-адресом, который я хочу, чтобы div был загружен. Я пробовал эту load()
функцию, но она оказалась медленной. Как и в случае, когда я использовал iframe
, загрузка занимает очень много времени, а высота и ширина не увеличиваются из-за дочернего элемента. Есть ли другой способ сделать это?
Обновить
имя файла моего html-кода index.html.erb
<div id="surveyDiv" style="overflow-y:auto;" >
<% @sections.each do |sec| %>
<% #sec = @sections.first %>
<br/>
<% @div_id = "survey_section_" (sec.id).to_s %>
<div id="<%=h @div_id %>">
<img src="/images/loading.gif" id="loadingPic"/>
<input type=hidden id="hid" name="hid" value="<%=h @srcString "?section=" (sec.id).to_s %>"/>
<!--<iframe id="the_frame" name="the_frame" src="<%#=h @srcString "?section=" (sec.id).to_s %>" scrolling="yes" frameborder="no" ></iframe>-->
</div>
<script type="text/javascript">
/*$('div:last').load($('input[type=hidden]:last').val())*/
$.get($('input[type=hidden]:last').val(), function(data) {
$('.surveyDiv div:last').html(data);
});
$('div:last').ready(function() {
$('#loadingPic').css('display','none')
});
</script>
<% end %>
</div>
Ответ Самича хорош, но потом, когда я его использовал, я не вижу загруженный html .. хе-хе
Комментарии:
1. если возможно? пожалуйста, предоставьте более подробную информацию с кодом.
Ответ №1:
Самич прав, get подходит для вашей задачи. И об изменении размера divs: я столкнулся с аналогичной проблемой со всплывающим окном на одном из моих сайтов. Размер всплывающего окна изменился в соответствии с загруженным содержимым, но что-то странное произошло в safari и explorer. Если текст был слишком длинным, то всплывающее окно занимало максимальную ширину, что не очень хорошо, я предпочитаю вместо этого переносить слова. Идеальный способ — определить ширину содержимого в содержимом. Например, у вас есть HTML для загрузки в контейнер:
<div class="d1">some text</div>
Чтобы обеспечить согласованность между браузерами, вы должны либо определить ширину .d1 с помощью css, либо определить встроенный стиль для тега div.
Ответ №2:
Я действительно не понимаю… ASP?
но попробуйте это
<div id="surveyDiv" style="overflow-y:auto;" >
<% @sections.each do |sec| %>
<% #sec = @sections.first %>
<br/>
<% @div_id = "survey_section_" (sec.id).to_s %>
<div id="<%=h @div_id %>">
<img src="/images/loading.gif" id="loadingPic" />
<input type="hidden" class="helloimhidden" id="hid<%=h @div_id %>" name="hid" value="<%=h @srcString "?section=" (sec.id).to_s %>" />
</div>
<% end %>
</div>
<script type="text/javascript">
$('.helloimhidden').each(function() {
var myInput = $(this);
$.get(myInput.val(), function(data) {
myInput.parent().html(data);
});
});
</script>
пожалуйста, дайте мне знать, как это происходит, я боюсь, что только последний div покажет результаты из-за перезаписи myInput… если да, попробуйте это
<script type="text/javascript">
var myI = 0;
var myInput = [];
$('.helloimhidden').each(function() {
myInput[myI] = $(this);
$.get(myInput[myI].val(), function(data) {
myInput[myI].parent().html(data);
});
myI ;
});
</script>
Комментарии:
1. извини, чувак, я перестал работать над этим … хехехе, и это не ASP, это Ruby on Rails. В любом случае, спасибо!