2016-12-10 7 views
0

Я пытаюсь использовать метод on() внутри функции, чтобы заменить метод ready(), поэтому я могу использовать более одного события для запуска функции. Вот общая функция Я хотел использовать его в:Метод jQuery on() не работает при замене метода ready()?

function tableImgScale() { 
$(function() { 
    var bandTableHeight = $('#banddetails').height() + "px"; 

    $(document).ready(function() { 
     $('#banddetails td:nth-child(1)').css({"height": bandTableHeight, "overflow": "hidden"}); 
     $('#banddetails td img').css({"display": "block", "width": "100%", "height": "100%", "objectFit": "cover"}); 
    }); 
}); 
} 

Таким образом, проще говоря, я пытаюсь заменить: $(document).ready(function() {...
с: $(document).on('ready resize', function() {...

Но это не будет работать. Однако функция с экземпляром метода .ready() работает отлично. Любая помощь будет оценена по достоинству.

+0

Эта ссылка может помочь вам http://stackoverflow.com/questions/40442779/events-load-and-ready-not-firing/40443935#40443935 – Geeky

+0

@Geeky Хм, будет наверняка будет стыдно, если мы не сможем сделать это так, как я хотел, но я думаю, что обходной путь все еще ... ну, обходной путь. – Lefty

ответ

0

Вам не нужно звонить в $(document).ready.

Внутри вашей tableImgScale функции, вы пишете:

$(function() { 
    // stuff 
}); 

... это еще один способ ожидания для документа, который будет готов до вызова функции. Таким образом, ваш внутренний звонок $(document).ready не нужен. Однако, если вы хотите, чтобы ваши корректировки CSS выполнялись, когда документ готов, а также при изменении размера, я бы извлек эту логику в свою собственную функцию, чтобы вы могли сразу ее вызвать, а также установить ее как слушателя для resize.

function tableImgScale() { 
 
    $(function() { 
 
    function adjustBandDetails() { 
 
     $('#banddetails td:nth-child(1)').css({ 
 
     "height": bandTableHeight, 
 
     "overflow": "hidden" 
 
     }); 
 
     $('#banddetails td img').css({ 
 
     "display": "block", 
 
     "width": "100%", 
 
     "height": "100%", 
 
     "objectFit": "cover" 
 
     }); 
 
    } 
 
    var bandTableHeight = $('#banddetails').height() + "px" 
 
    adjustBandDetails() 
 
    $(document).on('resize', adjustBandDetails) 
 
    }); 
 
}

+0

Это событие изменения размера, как я этого хотел, однако команды css внутри этой третьей вложенной функции сначала не загружаются, как если бы у меня она была как '$ (document) .ready (...' – Lefty

+0

Только что обновил мой ответ добавить эту функциональность :) – gyre

+0

Как и в комментарии Geeky, мне просто нужно будет сделать еще одну функцию для события изменения размера. – Lefty