jQuery - функция работает нормально при нажатии div, но не при загрузке страницы

У меня есть следующая функция, которую я хочу запустить при загрузке страницы и перезапустить, когда вы нажмете div # trigger. Когда вы нажимаете div # trigger, все в порядке. Тем не менее, при загрузке страницы код иногда работает, но иногда возвращает неправильное количество, и предупреждение (которое я просто вставил туда для целей отладки) никогда не срабатывает. Спасибо

  function textIndentFunc () {

     textString = $('#from-1 :selected').text();

     $('#hidden').text(textString);

     textWidth = $('#hidden').width();

     inputWidth = $('#from-1 select').width();

     indentMy = (inputWidth / 2) - (textWidth / 2);

    $('#from-1').css('text-indent',indentMy);

}

 $('#trigger').click(function(){
    textIndentFunc();
    alert('fire');
 });

textIndentFunc();

ОБНОВЛЕНИЕ - я должен был упомянуть этот код работает на document.ready.

ОБНОВЛЕНИЕ - перемещение кода в window.load ничего не меняет.

 kei14 мая 2012 г., 18:10
Можете ли вы опубликовать то, что у вас есть на jsFiddle?

Ответы на вопрос(5)

textIndendFunc в$(document).ready и по-прежнему не получается то, что вы ожидаете, попробуйте двигатьсяtextIndentFunc в$(window).load.

 Evanss14 мая 2012 г., 18:06
Все еще не работает, спасибо.

$(function() {
    textIndentFunc();
});

Это гарантирует, что DOM загружен, прежде чем предпринимать какие-либо действия для его манипулирования, в противном случае вы получите разные результаты в разное время, в зависимости от того, что загружено, а что нет.

 14 мая 2012 г., 18:27
Просмотр остальной части вашего кода поможет вам, потому что то, что вы нам показали, должно работать нормально.
 Evanss14 мая 2012 г., 18:06
Он уже был в функции, но теперь я переместил его в window.load, но проблема сохраняется. Спасибо

$(document).ready(function() {
   textIndentFunc();
});
 Evanss14 мая 2012 г., 18:07
Все еще не работает, спасибо.
Решение Вопроса

которая также работает при загрузке страницы? Потому что, если это так, может быть, 2 функции имеют конфликт ...

 14 мая 2012 г., 19:19
Рад, что я помог ... Спасибо
 Evanss14 мая 2012 г., 18:05
Только другая функция скрывает браузер chrome: function hideChrome () {setTimeout (function () {window.scrollTo (0, 1)}, 100); }
 Evanss14 мая 2012 г., 18:14
Я не уверен, помогло ли перемещение кода в window.load, но по какой-то причине, когда я также изменил порядок своей другой функции, это исправило это. Спасибо

  $(document).ready(function () {
$('#trigger').click(function(){
    textIndentFunc();
    alert('fire');
 });
});

function textIndentFunc () {

     textString = $('#from-1 :selected').text();

     $('#hidden').text(textString);

     textWidth = $('#hidden').width();

     inputWidth = $('#from-1 select').width();

     indentMy = (inputWidth / 2) - (textWidth / 2);

    $('#from-1').css('text-indent',indentMy);

}
textIndentFunc();
<div id="trigger">Hai</div>

 01 июл. 2016 г., 12:33
Работает . пожалуйста, проверьте

Ваш ответ на вопрос