datalist控件中的jquery函数

时间:2015-01-26 13:37:06

标签: javascript jquery html asp.net



$(function () {
  $('a.detials').on('click', function (ev) {
    $(this).next('div').toggle();
  });
});




这里的问题是我想在锚标签点击时将div设为toogle。但是我的代码存在问题我不知道是什么问题。我在google上搜索以达到此结果,当我点击时div没有打开锚标签,我需要帮助。

$(function(){         $(' a.detials')。on(' click',function(){             $(' + div',this).toggle();``         });     });



<asp:DataList ID="dtlRoomsPrice" Visible="false" orizontalAlign="center" runat="server" ShowFooter="False" ShowHeader="False" Width="700px" OnItemDataBound="dtlRoomsDetails_ItemDataBound">
    <ItemTemplate>
         <a href="javascript:void(0);" class="detials">ShowDetails</a>
   <div class="shoow" id="div_ID" style="width:687px;height:110px;background-color:rgb(247,239, 216);border-radius: 5px;box-shadow: 7px 6px 5px #888888; border: 2px solid gray; display:none;padding: 5px; ">
                <asp:Label ID="lblAmiintiesTxt" runat="Server" CssClass="shbe_label" Text="<%$ Resources:Resource,Amenities %>" Visible="false"></asp:Label>
                <asp:Label ID="lblAmiinties" runat="Server" CssClass="shbe_h2" Text='<%# Eval("Amenities") %>' Visible="true"></asp:Label>
            </div>
        </ItemTemplate>
    </asp:DataList>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

因为第一次点击没有分配点击处理程序。这就是发生的事情:

  1. 用户点击元素
  2. 调用函数togglee
  3. 将单击处理程序分配给元素
  4. 用户再次点击元素
  5. 调用Click处理程序(您希望在第一次单击时发生的事情)
  6. (此外,再次调用togglee会添加另一个点击处理程序。这绝对不是您想要的。)
  7. 我不确定您为何使用此togglee功能,但您不需要它。从元素中删除内联JavaScript:

    <a href="javascript:void(0);" class="detials">ShowDetails</a>
    

    并在页面加载时分配点击处理程序:

    $(function () {
        $('a.detials').on('click', function() {
            $('+ div', this).toggle();
        });
    });
    

    然后第一次点击该元素(以及任何后续点击)将调用该点击处理程序。