Я переношу файлы из прототипа в jQuery.
опытный образец:
function hideEditableMarkers() {
$$('.edit_marker').each(function(el) {
el.hide();
});
$$('.show_marker').each(function(el) {
el.show();
});
}
Event.observe(window, 'load', hideEditableMarkers);
JQuery:
function hideEditableMarkers() {
jQuery('.edit_marker').each(function(el){
el.hide();
});
jQuery('.show_marker').each(function(el){
el.show();
});
}
jQuery(document).ready(hideEditableMarkers());
Я не знаю, почему это не работает.
Первым параметром каждой функции обратного вызова является индекс элемента, а не ссылка на него
так что вот код jquery
function hideEditableMarkers() {
$('.edit_marker').each(function(idx,el){
$(el).hide(); // You may use 'this' variable in here as it points to the current element as well
});
$('.show_marker').each(function(idx,el){
$(el).show();
});
}
Эта:
jQuery(document).ready(hideEditableMarkers());
должно быть:
jQuery(document).ready(hideEditableMarkers);
Вам нужно передать ссылку на функцию в ready
чтобы она выполнялась как обработчик обратного вызова для события готовности DOM. То, что вы сейчас делаете, сразу же выполняет функцию (когда элементы не существуют), а затем передаёт возврат из этой функции (ничего) в качестве обратного вызова для .ready()
.
Я считаю, что функция должна быть повторно использована:
/*global jQuery */
function toggleMarkers (hideSelector, showSelector) {
jQuery(hideSelector).each(function () {
jQuery(this).hide();
});
jQuery(showSelector).each(function () {
jQuery(this).show();
});
}
jQuery(document).ready(function ($) {
toggleMarkers('.edit_marker', '.show_marker');
});
используйте $(this)
внутри каждого, поэтому он принимает текущий элемент... то, что у вас есть, является индексом и использует индекс как jquery selector el.hide()
попробуй это
function hideEditableMarkers() {
jQuery('.edit_marker').each(function(el){
$(this).hide();
});
jQuery('.show_marker').each(function(el){
$(this).show();
});
}
jQuery(document).ready(function(){
hideEditableMarkers() ;
});
//or
jQuery(document).ready(hideEditableMarkers);