2010-07-14 90 views
0

我有一个关于使用切换功能的问题。我有一个模板,在AJAX调用结束时使用从Web服务返回的数据进行填充。我试图完成的是加载onClick函数,以便隐藏的文本框将显示并切换到隐藏在下一次单击。jQuery切换问题

发生了什么事情是,当我点击链接一旦一切正常,文本框显示和隐藏。但是如果我一直点击编辑链接,文本框将显示并隐藏链接被点击的次数(即,我第二次点击该链接淡入/淡出两次,第三次淡入/淡出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> 

回答

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; 
     } 
    ); 
} 
+0

谢谢你的解释和代码更正!我非常感谢! – wali 2010-07-14 19:00:59

0

你一遍又一遍地重复设立了“点击”处理程序。调用.click()设置处理程序 - 你只需要做一次。

而且我认为:

$(this).text = "Cancel" 

应该

$(this).text("Cancel"); 

但我敢用你的代码混淆,所以我不完全肯定有什么建议。

+1

如尖提到的,'.toggle()'隐含两个功能分配给'。点击()'处理程序,就没有必要在'.toggle()'函数来定义的事件处理程序。 [简短示例](http://jsfiddle.net/Rw3pX/) – Michal 2010-07-14 16:54:27

+0

谢谢,抱歉让你困惑,我太忙了让自己困惑! – wali 2010-07-14 18:59:08

+0

@Michal谢谢你的例子,并打开我的眼睛到jsFiddle网站! – wali 2010-07-14 19:00:15