通用JQuery函数?

时间:2011-09-22 21:28:55

标签: jquery jeditable

我正在使用Jeditable来编辑许多字段,例如first_name,last_name,birthday等。

我的问题是我溺水细节:我不得不创建一个新的选择器,如$('#edit_first_name').editable$('#edit_birthday').editable,以使字段可编辑,并创建一堆特定的SQL命令每个字段在编辑后插入它们。

我的问题是:有没有办法可以在JQuery中创建泛型或OO,这样我就不必无休止地创建基本上做同样事情的代码?

我的猜测是我可以创建一些“通用”函数,通过提供一些JSON数组来动态创建$('#edit_someField').editable,这是通过对我感兴趣的所有字段名做一个SELECT而创建的。我想象这正是JQuery插件的作用。

我将非常感谢任何关于如何实现这一目标的方向。

修改

我提出的一个解决方案是将表,列名和id放在我想要编辑的任何内容的id值中。 例如,如果我想在表Person上编辑id = 6的first_name,那么在id中我将放置<span class="editable" id="Person:first_name:6">myFirstName</span>。当我将ID发送到我的save.php文件时,我使用preg_split将我的数据插入到表格中。

3 个答案:

答案 0 :(得分:1)

使用“可编辑”类标记所有可编辑输入字段。 (改为适合。)

$('.editable').each(function() {
  $(this).editable('mysaveurl.php');
});

这就是基本功能所需要的一切。根据您的需要,可以进行明显的改进。例如,如果您使用工具提示,请将它们粘贴到HTML中的title属性中,并在调用editable()时使用它们。

您的实际PHP / Ruby /服务器上的任何代码只是查看进入的id参数,并使用它来保存到数据库中的相应字段。

答案 1 :(得分:0)

只需使用一个类使它们都可编辑,并使用它们的id(或您附加到标记的属性),您可以指定要更新的字段。 然后只需将字段和值传递给数据库。

我不知道你正在使用的插件 但是,假设它有某种事件处理...
这样的事可能吗?

$(".editable").editable({
      complete : function() {
            var _what = $(this).attr("id");
            var _with = $(this).val();
            $.post("yourPostPage.php",{what:_what, where:_where});
       }
});

如果不了解您的环境,我将无法继续提供帮助。

答案 2 :(得分:0)

为一堆对象分配一些公共代码的jQuery方法是给所有对象提供相同的类,这样你就可以这样做:

$(".myEditableFields").editable("enable");

这将使用class="myEditableFields"为您网页中的所有对象调用可编辑的附加组件方法。

如果您只有一个ID列表,您可以将它们全部放在单选择器中,并且每个都会调用可编辑的jQuery方法:

$("#edit_first_name, #edit_birthday, #edit_last_name, #edit_address").editable("enable");

有时候,创建一个只识别父div中所有可编辑字段的选择的简单方法是:

$("#editForm input").editable("enable");

这将使用id=editForm自动获取容器div中的所有输入标记。

当然,您可以使用传统的过程编程模式将常用代码收集到您自己的函数中,并在需要时调用它,如下所示:

function initEditables(sel) {
    $(sel).editable("enable");
    // any other initialization code you want here or event handlers you want to assign
}

然后,根据需要直接调用它:

initEditables("#edit_first_name");

为了进一步提供帮助,我们需要了解您在代码中尝试执行的操作以及HTML的外观。