jQuery切换问题

时间:2010-07-14 16:36:59

标签: javascript jquery

我有一个关于使用切换功能的问题。我有一个模板,在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>

2 个答案:

答案 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");

但我对你的代码感到很困惑,所以我不确定该建议什么。