Миграция файла js из прототипа в jQuery не работает

0

Я переношу файлы из прототипа в 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());

Я не знаю, почему это не работает.

Теги:
prototype

4 ответа

2

Первым параметром каждой функции обратного вызова является индекс элемента, а не ссылка на него

так что вот код 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();
    }); 
}
0

Эта:

jQuery(document).ready(hideEditableMarkers());

должно быть:

jQuery(document).ready(hideEditableMarkers);

Вам нужно передать ссылку на функцию в ready чтобы она выполнялась как обработчик обратного вызова для события готовности DOM. То, что вы сейчас делаете, сразу же выполняет функцию (когда элементы не существуют), а затем передаёт возврат из этой функции (ничего) в качестве обратного вызова для .ready().

0

Я считаю, что функция должна быть повторно использована:

/*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');
});
0

используйте $(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);

Ещё вопросы

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