2009-08-10 3 views
2

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

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

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

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

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

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

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

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

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

я не нашел по ключевому слову это, чтобы работать таким образом ..

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

вот еще один пример того, что я хочу сделать: authorsList = "" .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())} 
    } 
}); 

ответ

3

Внимание, совершенно непроверенный код, но что-то вроде должно работать:

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

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

+0

спасибо за быстрый ответ :) !! .. и да, это действительно должно сработать .. так что это должно сработать .. не знаю, почему я не могу это получить .. но я, вероятно, пропустил что-то простое из-за усталости кодирования .. будет отлаживать дальше, то теперь я знаю, что я не пытаюсь сделать это по-другому. :) – 2009-08-12 20:57:26

+0

Я перехожу к моей «реальной» учетной записи, этот был ошибочно выполнен с новой учетной записью. Для продолжения см. http://stackoverflow.com/questions/1277570/ – 2009-08-14 12:30:09

+0

все еще не может этого работать .. Я продолжаю этот вопрос здесь: http://stackoverflow.com/questions/1277570 по какой-то причине $ (this) .attr ('rel') или любой другой, а также $ (this) .html() и т. д. НЕ УКАЗАНЫ. $ (this) is [object Object] и это is [object HTMLDocument] – 2009-08-14 12:36:28

0

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

$(this).data('rel) 

и для HTML

<div id="fruits" class="editme" data-rel="myfruits">apples</div> 
Смежные вопросы