Javascript jQuery切换问题
我有一个关于使用切换功能的问题。我有一个模板,在AJAX调用结束时使用web服务返回的数据填充该模板。我试图完成的是加载onClick函数,以便在下次单击时显示隐藏的文本框并将其切换为隐藏 发生的事情是,当我点击链接,一旦一切正常,文本框显示和隐藏。但是,如果我继续单击编辑链接,文本框将显示并隐藏该链接已被单击的次数(即,我第二次单击该链接时,它会淡入/淡出两次,第三次淡入/淡出三次,以此类推) 有人能看看我的代码帮我吗 谢谢 另外,我还试图将链接从“编辑”切换到“取消”;我没花太多时间在这件事上,但如果你也想给我一根骨头,我就要了!;-) 所引用元素的结构为:Javascript jQuery切换问题,javascript,jquery,Javascript,Jquery,我有一个关于使用切换功能的问题。我有一个模板,在AJAX调用结束时使用web服务返回的数据填充该模板。我试图完成的是加载onClick函数,以便在下次单击时显示隐藏的文本框并将其切换为隐藏 发生的事情是,当我点击链接,一旦一切正常,文本框显示和隐藏。但是,如果我继续单击编辑链接,文本框将显示并隐藏该链接已被单击的次数(即,我第二次单击该链接时,它会淡入/淡出两次,第三次淡入/淡出三次,以此类推) 有人能看看我的代码帮我吗 谢谢 另外,我还试图将链接从“编辑”切换到“取消”;我没花太多时间在这件事
<div>
<h4>${ProblemSubCategory}</h4>
<input id="text${ProblemSubCategoryID}" type="text" value=${ProblemSubCategory} class="scEditHide"/>
<a href="#" id="${ProblemSubCategoryID}" class="aEdit">Edit</a>
<a href="dummyWebservice.asmx\DeleteSC\${ProblemSubCategoryID}">Delete</a>
</div>
${ProblemSubCategory}
您正在一次又一次地重复建立“单击”处理程序。调用.click()
设置处理程序-只需执行一次即可
我还认为:
$(this).text = "Cancel"
应该是
$(this).text("Cancel");
但是我对你的代码感到非常困惑,所以我不确定该建议什么。关于设置onClick处理程序,Pointy是正确的。现在要做的是向元素添加一个新的处理程序(每次单击时都会触发该处理程序)。这样,第一次单击它时,将添加一个处理程序并启动它。第二次单击时,它将添加另一个处理程序,然后同时启动该处理程序和先前添加的处理程序 你应该把代码改成这样
function showSCs(data) {
$('#sometmpl3').tmpl(data.d)
.appendTo($('#subCats'))
.find(".aEdit")
.toggle(
function() {
$(this).parent().find('.scEditHide').fadeIn();
$(this).text("Cancel");
return false;
},
function() {
$(this).parent().find('.scEditHide').fadeOut();
$(this).text("Edit"); //added: set text back to edit
return false;
}
);
}
正如Pointy提到的,
.toggle()
隐式地将这两个函数分配给。单击()
处理程序,不需要在.toggle()
函数中定义事件处理程序。谢谢你,抱歉把你弄糊涂了,我正忙着把自己弄糊涂呢!感谢您的解释和代码更正!我非常感激!
function showSCs(data) {
$('#sometmpl3').tmpl(data.d)
.appendTo($('#subCats'))
.find(".aEdit")
.toggle(
function() {
$(this).parent().find('.scEditHide').fadeIn();
$(this).text("Cancel");
return false;
},
function() {
$(this).parent().find('.scEditHide').fadeOut();
$(this).text("Edit"); //added: set text back to edit
return false;
}
);
}