Jeditable: как установить параметры на основе атрибутов элемента dom - PullRequest
2 голосов
/ 10 августа 2009

Часто я нахожу, что мне нужно использовать jeditable в нескольких областях, каждая из которых требует разных настроек параметров.

Например, я использую jeditable с автоматически вводимым типом ввода, а затем мне нужно передать разные источники данных на разные входы.

Я хотел использовать только один экземпляр редактируемого плагина и пытался присвоить скрипту значения attr, но, очевидно, это не работает так, как я к нему подхожу ..

Я надеюсь, что кто-то может немного помочь мне ..

По сути, я хотел бы иметь возможность установить значение параметра jeditable на основе значения атрибута элемента dom, которым он манипулирует.

что-то вроде:

$('.editme').editable('savedata.php',{
    loadurl   : 'loaddata.php',
    loaddata  : { handle:  $(this).attr('rel') }
});

тогда я мог бы просто указать разные источники нагрузки с помощью:

<div id="fruits" class="editme" rel="myfruits">apples</div>

Я не нашел ключевое слово this , чтобы работать таким образом ..

Как получить доступ к атрибутам элемента dom, который динамически обрабатывается для каждого jeditable связывания?

вот еще один пример того, что я хочу сделать: horsList = "" .split (",");

  // extend jeditable with autocomplete 
  $.editable.addInputType('autoc', {
      element: function(settings, original) {
      var input = $("<input />").autocomplete(settings.mdata, settings.autoc);
      $(this).append(input);
  return input; }
   });

$('.editable.authors').editable('savedata.php',{
   type : "autoc", 
   mdata    : $(this).attr('rel'), // should hold the name 'authorsList'
   onblur   : 'ignore',
   autoc    : {  multiple: true,
                 multipleSeparator: ',' },
    loadurl   : 'loaddata.php',
    loadtype  : 'POST',
    loaddata  : {handle: function(){ return eval($("#objhandle").val())}, lookuptype: 'mirror'},
    submit    : 'save',
    cancel    : 'cancel',
    tooltip   : "Click to edit",
    style     : "inherit",
    cssclass  : 'jedi',
    id        : "field",
    name      : "data",
    submitdata : {
        storetype: 'mirror',
        handle: function(){return eval($("#objhandle").val())},
        timestamp: function(){return eval($("#objtimestamp").val())}
    }   
});

Ответы [ 2 ]

3 голосов
/ 13 августа 2009

Предупреждение, полностью непроверенный код, но что-то вроде следующего должно работать:

$('.editme').each(function() {
    $(this).editable('savedata.php',{
        loadurl   : 'loaddata.php',
        loaddata  : { handle:  $(this).attr('rel') }
    });
});

Таким образом, оценка this должна быть правильной при инициализации Jeditable для элемента.

0 голосов
/ 19 апреля 2015

это сработало для меня

$(this).data('rel)

и для HTML

<div id="fruits" class="editme" data-rel="myfruits">apples</div>
...