【问题标题】:Show hide custom metaboxes, live, with jQueryShow hide custom metaboxes, live, with jQuery
【发布时间】:2014-08-18 01:14:57
【问题描述】:

我正在尝试通过 jQuery 切换一些自定义元框的可见性。 我设法默认隐藏它们,并在单击正确的帖子格式时使它们可见。

当用户更改帖子格式时,我没有找到使元框消失的解决方案。

例如 默认值:隐藏 点击“旁边”:显示 从“Aside”切换到任何其他帖子格式:隐藏。

我有以下代码:

jQuery(document).ready(function () {
    jQuery("#postbox-container-2").addClass("hidden");

    if (jQuery("input#post-format-video").is(':checked')) {
        jQuery("#postbox-container-2").removeClass("hidden");
    }

    jQuery("input#post-format-video").change(function () {

        if (jQuery(this).is(':checked')) {
            jQuery("#postbox-container-2").removeClass("hidden");
        }
    });

});

有什么想法吗?

基于@zipp fiddle 的不同方法

Query(document).ready(function() {
    jQuery( "#postbox-container-2" ).hide();
    var toToggle='';
    jQuery('input#post-format-video').change(function() {
        if (toToggle){
        jQuery(toToggle).hide();
        }

            //alert(this.value+ " is checked");
            var selector='#postbox-container-2';
            jQuery(selector).toggle();     
            toToggle=selector;       
    });
});

即使这个工作正常,但当我点击不同的单选按钮时不会实时更改

【问题讨论】:

  • 看看jquery的.show()、.hide()、.toggle()方法。没有任何小提琴或 html 源,很难提供帮助。
  • 非常感谢zipp的回复。 html 源将是 WordPress 管理面板,在特定的 post.php 挂钩中,在这里发布有点长,但我理解你的意思。基本上我需要检查一个单选按钮是否被选中,如果它被选中,则显示一个 div(并且那部分工作)但是如果我从那个单选按钮更改为另一个,那么 div 不会消失,这就是我不知道要做什么的地方做..

标签: javascript jquery wordpress addclass removeclass


【解决方案1】:

这是一个jsfiddle 与您的示例。更改事件被触发only on the checked input。未选中特定输入时不会触发它。为了知道您的特定输入是否未选中,您需要测试所选输入是否是您的:$(this).attr('id') == 'post-format-video' 并执行您的操作。在我的示例中,我使用 $('input:radio[name=myRadio]') 选择无线电输入,因此您需要调整您的 html 和代码以获得正确的选择器。

//This selector is triggered when my radio is selected for all input radio that I want to listen to
$('input:radio[name=myRadio]').change(function() {
        //if we have a radio button selected previously we hide the div related
        if (toToggle){
        $(toToggle).hide();
        }
        //select the div we want to show
        var selector;
        if ($(this).attr('id')=='post-format-video'){
        selector='#postbox-container-2';
        }
        ...
        //show it (could have called toggle() )
        $(selector).show();
        //store it for the next selection     
        toToggle=selector;   

【讨论】:

  • 非常感谢您为我付出的时间。您的回答很棒(我投了赞成票),但不幸的是没有解决问题,当我更改复选框时,div 仍然可见,基本上它的工作原理与我上面的示例完全相同,编辑我的问题,用我的 id 修改代码以防万一我做了出了点问题。
  • 你不需要 if (jQuery(this).is(':checked'))。尝试不使用。
  • @zipp 请,所以与 jsfiddle.net 没有任何关系,请尝试始终将相关代码粘贴到您的问题中。
  • @zipp 我删除了它,它仍然可以正常工作,感谢您的建议,代码越少越好。
  • @antonio83 您从我这里粘贴的代码不起作用,因为您的选择器仅在#post-format-video 上,因此当您选择其他无线电输入时它不会被触发并且您不会存储'toToggle' 中的最后一个 id。 RokoC.Buljan 谢谢你的评论,我希望现在更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-08
  • 2019-05-13
  • 2020-03-08
  • 1970-01-01
相关资源
最近更新 更多