2012-07-28 17 views
1

我有多组Twitter Bootstrap checkbox groups。我想创建所有活动(即,Bootsrtap添加“活动”类)按钮的散列,当任何一个复选框按钮被点击时。假设HTML是像这样经过几次点击:创建一个在Twitter引导按钮组之间激活的复选框按钮的哈希点击

<div id="horizontal" class="btn-group" data-toggle="buttons-checkbox"> 
    <button class="btn active" data-hposition="1">Left</button> 
    <button class="btn" data-hposition="2">Middle</button> 
    <button class="btn active"data-hposition="3">Right</button> 
</div> 
<div id="vertical" class="btn-group" data-toggle="buttons-checkbox"> 
    <button class="btn" data-vposition="1">Top</button> 
    <button class="btn active" data-vposition="2">Center</button> 
    <button class="btn active" data-vposition="3">Bottom</button> 
</div> 

我开始了简单的只用一个DIV,但我没有得到正确的结果:

<script> 
    $('#horizonatal').click(function(){ 
     var paramsHash = {}; 
     var hids = []; 
    $('.active').each(function() { 
     paramsHash.hids.push($(this).data('hposition')); 
    }) 
     console.log(paramsHash.hids);  
}) 
</script> 

使用上面的HTML,当我点击“右”我在控制台中得到类似[1,undefined]的东西。

最后,我想获得一个哈希后像{ {'hids', [ 1, 3 ]}, {'vids', [ 2, 3, ]} }

我尝试了jsfiddle,但我不认为我在加载引导正确的东西,因为我没有看到这些按钮会激活。

回答

0

这是因为有您的数据属性(用小提琴)错别字,也可以选择所有的.active类而不是那些属于水平 DIV和他们没有一个数据hposition属性返回undefinded,请尝试以下操作:

$('#horizontal').click(function(){ 
     var paramsHash = { 
       hids: [], 
      //vidz: [] 
      } 
    $('.active', this).each(function() { 
     paramsHash.hids.push($(this).data('hposition')); 
    // paramsHash.vidz.push($(this).data('classroom')); 
    }) 
     console.log(paramsHash);  
}) 

DEMO


请注意,他们是 按钮标签不是单选按钮。

+0

谢谢你回答和排序通过我的混乱的问题。我更正了拼写错误和错误的单选按钮引用。 我正在尝试构建复选框ID的散列。 – JHo 2012-07-28 16:22:00

+0

好的。现在我已经修复了我错误地引用单选按钮的地方,我指的是复选框按钮(包括其他错误),你能告诉我如何收集在一个组中点击的所有复选框吗?另外,是否有可能使它在jtfiddle上工作(即,Bootstrap复选框button.js删除并添加活动类)? – JHo 2012-07-28 16:43:25

+0

@JHo欢迎您,何时收集数据?什么样的数据?目前你的标记没有“复选框”。 – undefined 2012-07-28 16:50:26