在jQuery上不起作用.buttonset()

时间:2013-05-04 16:59:28

标签: javascript jquery wordpress jquery-ui wordpress-theming

我有一些:由wordpress初始化的复选框元素。 现在我将.buttonset()函数设置为#format但这不起作用... 像这样的样本:http://jqueryui.com/button/#checkbox

HTML:

<div id="format">
    <?php
     $categories = get_categories();
     foreach ($categories as $category) { ?>
     <input type="checkbox" name="check" value="<?php echo $category->cat_ID; ?>">
     <label><?php echo $category->cat_name;?></label><?php } ?>
</div>

JS:

$('#format').buttonset();
$('input[type=checkbox]').removeClass('ui-helper-hidden-accessible');

$(':checkbox[name=check]').each(function( i ){
    var nameID = 'check'+ (i+1);
    this.id = nameID;
    $(this).next('label').prop('for', nameID); 
});

1 个答案:

答案 0 :(得分:0)

您的所有复选框都具有相同的名称“check”。 尝试这样做:

<div id="format">
    <?php
     $i = 0;
     $categories = get_categories();
     foreach ($categories as $category) { ?>
     <input type="checkbox" name="check<?php echo $i ?>" value="<?php echo $category->cat_ID; ?>">
     <label><?php echo $category->cat_name;?></label>
     <?php 
       $i++;
       } 
      ?>
</div>

然后在你的js:

$(':checkbox[name^=check]').each(function( i ){
    var nameID = 'check'+ (i+1);
    this.id = nameID;
    $(this).next('label').prop('for', nameID); 
});

然后jQuery将找到所有以名称检查开头的复选框,如“check1”,“checkblabla”等......

“$('#format')。buttonset();”需要在“换”之后来。 字体:

http://api.jquery.com/attribute-starts-with-selector/

编辑:

我认为你真的不需要用js改变for,你只能用php做,然后:

<div id="format">
    <?php
     $i = 0;
     $categories = get_categories();
     foreach ($categories as $category) { ?>
     <input type="checkbox" name="check<?php echo $i ?>" value="<?php echo $category->cat_ID; ?>">
     <label for="check<?php echo $i ?>"><?php echo $category->cat_name;?></label>
     <?php 
       $i++;
       } 
      ?>
</div>

然后在你的js:

$( "#format" ).buttonset();