JQuery '.load ()' не работает

0

Я пытаюсь использовать .load() jQuery .load() и я не могу заставить ее работать. Я работаю над плагином Wordpress, и я пытаюсь установить атрибут в options основе передаваемого параметра (точнее, я пытаюсь установить параметр по умолчанию в поле выбора).

Вот что я пытаюсь сделать:

$("#schedule_timeslot").load(function(){
          //execute code to make changes to DOM
          //use conditional statements to figure out which DOM to adjust
});

Вот HTML:

        <select id="schedule_timeslot" name="timeslot">
            <option name="8-10" class="schedule_time" value="0" id="ts0">8am - 10am</option>
            <option name="10-12" class="schedule_time" value="1" id="ts1">10am-12pm</option>
            <option name="12-2" class="schedule_time" value="2" id="ts2" >12pm - 2pm</option>
            <option name="2-4" class="schedule_time" value="3" id="ts3">2pm - 4pm</option>
            <option name="4-6" class="schedule_time" value="4" id="ts4" >4pm - 6pm</option> 
        </select>

Я смог использовать:

$(window).load(function(){
    alert("test"); 
});

Может ли кто-нибудь сказать мне, почему функция не работает и что мне нужно сделать для выполнения функции по определенному элементу?

  • 0
    Поскольку $("#schedule_timeslot") не загружается при вызове, jQuery не может выбрать его. Даже если он может выбрать его, <select> не будет onload событие onload .
  • 2
    Я могу ошибаться, но я не думаю, что <select></select> запускает событие загрузки. window делает и теги <img /> делают, но я не верю, что узлы <select> делают.
Показать ещё 7 комментариев
Теги:
dom

1 ответ

2
Лучший ответ

Элементы <select> не запускают событие загрузки. События загрузки запускаются с элементами, связанными с URL (обычно для запроса ресурса требуется отдельный HTTP-запрос), например <script> тег <img/> тег <iframe> и т.д.

Чтобы запустить событие в <select>, просто нарисуйте элемент в готовом блоке документа:

$(document).ready(function () {
    $("#schedule_timeslot")....
});

или стенографию,

$(function () {
    $("#schedule_timeslot")...
});

Это гарантирует, что DOM будет загружен и готов, и элемент будет присутствовать, когда вы нацеливаете его на jQuery (при условии, что это загружается на страницу изначально, а не через ajax).

РЕДАКТИРОВАТЬ:

Чтобы вызвать функцию в готовом документе, просто определите функцию в теге скрипта или внешнем листе JavaScript. Внутри блока готовности документа вызовите функцию.

Например:

<script type="text/javascript">
    function init() {
        alert("Hello, I am ready!");
    }

    $(function () {
        init();
    });
</script>

Готовые блоки документов также обеспечивают место для применения обработчиков событий. Поскольку эти блоки срабатывают при завершении загрузки DOM, вы можете быть уверены, что будет присутствовать любой элемент на странице, загружаемый с начальной загрузкой страницы (не через ajax).

<script type="text/javascript">
    $(function () {
        $("#schedule_timeslot").on('change', function (e) {
           alert("I Changed!");
        });
    });
</script>

Редактировать:

Чтобы установить выбор по умолчанию в поле выбора, вы должны использовать .val() в jQuery. В разделе готовности документа вызовите .val() следующим образом:

<script type="text/javascript">
    $(function () {
        $("#schedule_timeslow").val(4);
        // This will select
        // <option name="4-6" class="schedule_time" value="4" id="ts4" >
        // as the option in the select box.
    });
</script>
  • 1
    Я подозреваю, что ОП хочет .change() .
  • 0
    Я думаю, что это $("#schedule_timeslot") ...
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню