javascript - Farbtastic 多字段 - Wordpress

标签 javascript wordpress

我正在开发一个 wordpress 主题。我现在正在处理主题选项页面。我添加了 farbtastic(4 个字段),问题是每次我点击输入时,颜色选择器也会出现在其他 3 个字段上。有人知道如何解决这个问题吗?谢谢!

<div> <br />
  <label for="<?php echo $colorPicker['ID']; ?>"><?php _e($colorPicker['label']); ?></label>
  <input type="text" class="color-picker" id="<?php echo $colorPicker['ID']; ?>" value="<?php echo get_option($colorPicker['ID']); ?>" name="<?php echo $colorPicker['ID']; ?>" />
  <div id="<?php echo $colorPicker['ID']; ?>_color" class="fabox"></div>            </div>          
<?php endforeach; ?>            
<p><input type="submit" name="update_options" value="Update Options" class="button-primary" /></p>
</form>
</div>

<script type="text/javascript">
jQuery(document).ready(function($) {
    var colorPickers = $('.color-picker');
    console.log(colorPickers);
    for (e in colorPickers) {
        if (colorPickers[e].id != undefined) {
            var colorPickerID = colorPickers[e].id;
            $('#' + colorPickerID + '_color').farbtastic('#' + colorPickerID);
        }
    }

    $('.fabox').hide();


    $('.color-picker').click(function() {
        $('.fabox').fadeIn();
    });

    $(document).mousedown(function() {
        $('.fabox').each(function() {
            var display = $(this).css('display');
            if (display == 'block') $(this).fadeOut();
        });
    });
});​
</script>

HTML 输出:

<form method="POST" action="">  

                        <div>

            <br />

            <label for="color_1"><strong>Post Title</strong></label>

            <input type="text" class="color-picker" id="color_1" value="#273990" name="color_1" />

            <div id="color_1_color" class="fabox"></div>

            </div>

                        <div>

            <br />

            <label for="color_2"><strong>Paragraph Text</strong></label>

            <input type="text" class="color-picker" id="color_2" value="#840000" name="color_2" />

            <div id="color_2_color" class="fabox"></div>

            </div>

                        <div>

            <br />

            <label for="color_3"><strong>Example</strong></label>

            <input type="text" class="color-picker" id="color_3" value="#4377df" name="color_3" />

            <div id="color_3_color" class="fabox"></div>

            </div>

                        <div>

            <br />

            <label for="color_4"><strong>And Another Example</strong></label>

            <input type="text" class="color-picker" id="color_4" value="#3c8400" name="color_4" />

            <div id="color_4_color" class="fabox"></div>

            </div>

                        <p><input type="submit" name="update_options" value="Update Options" class="button-primary" /></p>

        </form>

    </div>

最佳答案

您使用 jQuery 选择器引用的元素范围太广。本质上,您的代码会说,每次您单击带有 color-picker 类的任何内容时,都会显示带有 fabox 类的任何内容。

您应该使您的引用更具体到当前单击的 .color-picker

我建议替换这个:

$('.fabox').fadeIn();

有了这个:

$(this).parent().find('.fabox').fadeIn();

因此,您仅引用连接到您刚刚单击的 .color-picker.fabox

编辑:正如 gillesc 指出的那样,使用它实际上会更快:

$(this).next().fadeIn();

只要 .fabox 始终跟在 .color-picker 之后。

如果 .fabox 在同一容器内,但不是您可以使用的下一个元素:

$(this).next('.fabox').fadeIn();

关于javascript - Farbtastic 多字段 - Wordpress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10434697/

相关文章:

javascript - 什么时候在当前对象上创建的属性VS原型(prototype)?

php - Wordpress 中多个作者的 Facebook Open-graph 标签

php - WordPress:从小部件代码访问数据库

wordpress - 如何在Wordpress中的front-page.php(主页)中显示最近的帖子?

javascript - 如何选择末尾没有点的段落并删除 - 使用 jQuery/javascript?

javascript - 使用 for 循环动态更改 Div 颜色

wordpress - 您无权访问此服务器上的/wp-admin/post.php。 WordPress的

html - 在 Wordpress 上定位图像的问题

javascript - 如何将each()与mouseenter、mouseover和data属性正确结合使用

javascript - 如何在没有身份验证页面的情况下将网络表单直接发布到 Google 表格?