Я пытаюсь использовать .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");
});
Может ли кто-нибудь сказать мне, почему функция не работает и что мне нужно сделать для выполнения функции по определенному элементу?
Элементы <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>
.change()
.
$("#schedule_timeslot")
...
$("#schedule_timeslot")
не загружается при вызове, jQuery не может выбрать его. Даже если он может выбрать его,<select>
не будетonload
событиеonload
.<select></select>
запускает событие загрузки.window
делает и теги<img />
делают, но я не верю, что узлы<select>
делают.