我有一个关于使用切换功能的问题。我有一个模板,在AJAX调用结束时使用从Web服务返回的数据填充。我想要完成的是加载onClick函数,以便显示隐藏的文本框并切换为在下一次单击时隐藏。
正在发生的事情是,当我点击链接后,一切都很好,文本框显示和隐藏。但是,如果我一直单击编辑链接,文本框将显示并隐藏链接被点击的次数(即,我第二次点击链接,它会淡入/淡出两次,第三次淡入/淡出3时代,等等。)
有人请看我的代码并帮助我吗?
谢谢!
PS。我也试图切换链接,从“编辑”到“取消”;我没有花太多时间在那,但如果你想给我一个骨头,我会接受它! ; - )
function showSCs(data) {
$('#sometmpl3').tmpl(data.d)
.appendTo($('#subCats'))
.find(".aEdit").toggle(function() {
$(this).click(function() {
$(this).parent().find('.scEditHide').fadeIn();
$(this).text = "Cancel";
return false;
});
}, function() {
$(this).click(function() {
$(this).parent().find('.scEditHide').fadeOut();
return false;
});
});
}
引用元素的结构是:
<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>
答案 0 :(得分:1)
Pointy关于设置onClick处理程序是正确的。您现在正在做的是添加一个新的处理程序(每次单击时将触发)到该元素。这样,第一次单击它将添加一个处理程序并触发它。第二次单击时,它将添加另一个处理程序,然后同时触发它和之前添加的处理程序。
您应该将代码更改为此类代码。
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;
}
);
}
答案 1 :(得分:0)
你一遍又一遍地重复建立“点击”处理程序。调用.click()
设置处理程序 - 您只需要执行一次。
我也想:
$(this).text = "Cancel"
应该是
$(this).text("Cancel");
但我对你的代码感到很困惑,所以我不确定该建议什么。