0

我有 3 个结构相同的元素

<div id="Chatbox1">
    <div class="chatboxhead">            
        <div class="chatboxoptions">
            <a href="javascript:void(0)" class="ToggleChatBoxGrowth" title="Minimize chat box">-</a>
        </div>
    </div>                
</div>

唯一的区别是他们每个人都有不同的ID(Chatbox1,Chatbox2,Chatbox3)。

我试图将“点击”事件绑定到.ToggleChatBoxGrowth每个类:

$('#chatbox_' + id + ' > .chatboxhead > .chatboxoptions > .ToggleChatBoxGrowth').click(function ()
    {
        ChatBox.ToggleChatBoxGrowth(id);
    });

但问题是它们都受同一个点击事件的约束。
所以当我点击ChatBox1一个时,我会得到点击事件id = ChatBox3

你能帮我吗?

4

4 回答 4

4

我什至会将点击绑定到ToggleChatBoxGrowth使用类选择器,然后遍历 DOM 以接收父母 ID。

$(".ToggleChatBoxGrowth").click(function(){
   var parentId = $(this).parents(".chatboxhead").parent().attr("id");
   ChatBox.ToggleChatBoxGrowth(parentId);
});

示例:http: //jsfiddle.net/6C2aQ/

于 2013-01-30T10:04:52.850 回答
2
$('.ToggleChatBoxGrowth', '[id^="chatbox_"]').on('click', function() {
  ChatBox.ToggleChatBoxGrowth( $(this).closest('[id^="chatbox_"]').attr('id') );
});
于 2013-01-30T10:08:46.813 回答
1

试试这个:http: //jsfiddle.net/MSxhy/

ChatBox.ToggleChatBoxGrowth($(this).parents('[id="Chatbox'+id+'"]').attr('id'));
于 2013-01-30T10:04:40.147 回答
0

根据您的描述,您似乎正在使用循环来绑定事件。这是正确的吗?如果是这样,“id”将具有循环最后一次迭代的值。如果你想保留它,你可以通过闭包来做到这一点

while(id<3){
  (function(){
      var localId = id;
      $('#chatbox_' + id+ ' > .chatboxhead > .chatboxoptions > .ToggleChatBoxGrowth').click(function ()
       {
          ChatBox.ToggleChatBoxGrowth(localId);
       });
   })();
   id++;
}
于 2013-01-30T10:05:32.513 回答