我有一个链接和按钮列表,这些链接和按钮的类名是使用foreach循环在php中动态生成的。输出示例为:
<a class="edit-url-9rwpaZV" href="page/1">This is my title</a>
<button class="edit-btn-9rwpaZV" data-text-swap="Save">Edit</button>
<a class="edit-url-5R8eBR2M" href="page/2">Why tea is great</a>
<button class="edit-btn-5R8eBR2M" data-text-swap="Save">Edit</button>
<a class="edit-url-V7Ma8Olb" href="page/3">Fish are friends</a>
<button class="edit-btn-V7Ma8Olb" data-text-swap="Save">Edit</button>
我有jQuery函数,当按下"编辑"按钮时就会启动,这样我就可以编辑链接的文本并通过ajax保存它。
这些功能的一个示例如下:
$(document).ready(function(){
editing=false;
c = $(".edit-url");
b = $(".edit-btn").click(toggle_edit);
toggle_edit();
});
function toggle_edit()
{
switch(editing){
case true:
c.get(0).contentEditable = true;
c.css({background:"#eeeeee"});
editing=false;
break;
case false:
c.get(0).contentEditable = false;
c.css({background:"white"});
editing=true;
break;
}
}
以前(在我为每个类名添加唯一标识符之前),当我点击任何按钮时,它会使所有".edit url"链接都可编辑,但我不希望所有字段都可编辑。我只希望每个按钮左侧的字段可编辑(即只有一个字段)。
我想知道的是,如何将通配符/变量添加到选择器中,以便当我单击(例如)"edit-btn-V7Ma8Olb"时,它使"edit-url-V7Ma8 Olb"字段只能编辑,而不能编辑所有其他字段?
解决方案
最终使用。()建议如下:http://jsfiddle.net/1yncv6rf/3/
$(document).ready(function(){
var editable=1;
$(".edit-btn").click(function(){
if(editable == 1){
$(this).prev().attr('contenteditable','true');
return editable=2;
} else if(editable == 2) {
$(this).prev().attr('contenteditable','false');
return editable=1;
}
});
});
您可以使用jQuery.prve():
$(document).ready(function(){
editing=false;
c = $(".edit-url");
b = $(".edit-btn").click(function(){
var elementToEdit = $(this).prev();
switch(editing){
case true:
elementToEdit.contentEditable = true;
elementToEdit.css({background:"#eeeeee"});
editing=false;
break;
case false:
elementToEdit.contentEditable = false;
elementToEdit.css({background:"white"});
editing=true;
break;
});
});
我更希望您对$(this)选择器jquery进行一点研究,它只会抓取选中的按钮,然后使用jquery.previous.