2008-12-14 42 views
14

我试图使用Jeditable作为内联编辑解决方案。Jeditable - 通过点击激活X的编辑Y

默认行为(点击元素进行编辑)效果很好,但我想通过单击另一个元素来激活元素。

例如,点击a.activateEdit将激活下一个div.edit(显然应该使用jQuery选择器来完成)。

我看着这个Jeditable文档,但无法找到正确的语法

仅供参考,默认Jeditable语法是沿着线的东西:

$(document).ready(function() { 
    $('.edit').editable('http://www.example.com/save.php'); 
}); 

*编辑:找到a better solution *

+0

我知道你的问题被问了一段时间,但我目前正试图实现一些非常相似的东西。我有它的点击链接工作,但有没有办法删除你想编辑的元素的点击事件?换句话说,只能编辑可编辑的元素,可以从链接编辑,而不是专门点击它的时候。谢谢。 – 2011-05-18 20:50:57

+0

您可以尝试unbind()以删除该对象的单击事件绑定。 – yoavf 2011-05-19 08:19:14

回答

24

以上代码也不完全正确。它触发ALL Jeditable实例上的点击事件。

有很多方法可以做到这一点,这一切都取决于你的HTML,但例如,如果你有以下HTML:

<div class="edit" id="unique_id">Editable text</div> 
<a href="#" class="edit_trigger">Edit me!!</a> 

那么你可以使用下面的JavaScript:

/* Bind Jeditable instances to "edit" event. */ 
$(".edit").editable("http://www.example.com/save.php", { 
    event  : "edit" 
}); 
/* Find and trigger "edit" event on correct Jeditable instance. */ 
$(".edit_trigger").bind("click", function() { 
    $(this).prev().trigger("edit"); 
}); 
2

您可以将此代码放置在另一个元素的点击功能中。例如:

HTML:

<a class="clickme">Click me to edit</a> 
<div class="edit">Edit Me!</div> 

的jQuery:

$(document).ready(function() { 
$("a.clickme").click(function(){ 
    $('.edit').editable('http://www.example.com/save.php'); 
}); 
}); 
2

好吧,Ata's answer并没有完全工作,但它没有把我在正确的道路上:

$(document).ready(function() { 
    $('.edit').editable('http://www.example.com/save.php'); 
    $("a.clickme").click(function(){ 
      $('.edit').click(); 
    }); 
}); 
1

我已将前两个响应的能力组合为下一个可编辑元素的目标,如下所示:

/* Find and trigger "edit" event on next Jeditable instance. */ $(".edit_trigger").livequery('click', function() { $(this).next().click(); });