Toggle jQuery 实时事件中的问题

Posted

技术标签:

【中文标题】Toggle jQuery 实时事件中的问题【英文标题】:Toggle Problem in live event of jquery 【发布时间】:2011-01-11 03:36:40 【问题描述】:

我被这个困住了,谁能帮帮我...

这里是html

<tr class="appendvalue">
  <td colspan="2">
     <asp:DropDownList ID="ddlSource" runat="server"></asp:DropDownList>
     <asp:TextBox ID="txtSourceValue" runat="server" CssClass="hide" />
     <a href="#" class="t12">add static value</a>
  </td>

这里是jquery

$(document).ready(function() 
        $('.appendvalue > td > a').live("click", function(e) 
            e.preventDefault();
            $(this).prev().prev().toggle();
            $(this).prev().toggle();
            $(this).toggle(function()  $(this).text("select from dropdown"); , function()  $(this).text("add static value"); );
        );
    );

第一次点击后,它只切换锚文本而不切换下拉和文本框..

【问题讨论】:

【参考方案1】:

试试这个:

$(document).ready(function() 
    $('.appendvalue > td > a').live("click", function(e) 
        e.preventDefault();
        var $this = $(this);
        $this.prevAll().toggle();
        $this.toggle(function()  $this.text("select from dropdown"); , function()  $this.text("add static value"); );
    );
);

【讨论】:

如果你要使用 $(this) 更多然后一次缓存它。变量 $this = $(this)。然后在其余的地方使用 $this,这意味着你没有重新创建 jQuery 对象。 @petersendidit 已经很晚了。我主张豁免权。 :) 很好,不知道为什么我在编写代码时没有看到。它已修复。谢谢老哥!【参考方案2】:

.toggle() 确实是一种方便的点击事件方法,因此在同一元素的点击事件处理程序中使用 .toggle() 会出现问题。而是……

$(document).ready(function() 
    $('.appendvalue > td > a').live("click", function(e) 
        e.preventDefault();
        $(this).prevAll().toggle();
        if ($(this).parent().find("input").is(":hidden")) 
            $(this).text("add static value");
         else 
            $(this).text("select from dropdown");
        
    );
);

【讨论】:

以上是关于Toggle jQuery 实时事件中的问题的主要内容,如果未能解决你的问题,请参考以下文章

jquery1.9以上版本如何使用toggle函数

unity动态为多个toggle添加事件

jquery学习笔记2——jq效果

jquery动态live绑定toggle事件

jQuery的toggle事件

jQuery的切换函数(hover,toggle)