使用简单的jQuery脚本显示/隐藏div

时间:2016-02-01 作者:sven.v

我想使用WordPress页面上的单选按钮显示/隐藏内容。当用户单击标签为“red”的单选按钮时,需要显示相应的div(类为“red”)。

下面是我正在尝试集成的(有效)示例:http://www.tutorialrepublic.com/codelab.php?topic=faq&file=jquery-show-hide-div-using-radio-button

在WordPress中,我将其放置在我主题的自定义CSS中:

.box
 {
  padding: 20px;
  display: none;
  margin-top: 20px;
  border: 1px solid #000;
 }

.red { background: #ff0000; }
.green { background: #00ff00; }
.blue { background: #0000ff; }
我已经把它放在了一个外部脚本(script pricing.js)中。该文件已复制到子主题文件夹:

$(document).ready(function(){
$(\'input[type="radio"]\').click(function(){
    if($(this).attr("value")=="red"){
        $(".box").not(".red").hide();
        $(".red").show();
    }
    if($(this).attr("value")=="green"){
        $(".box").not(".green").hide();
        $(".green").show();
    }
    if($(this).attr("value")=="blue"){
        $(".box").not(".blue").hide();
        $(".blue").show();
    }
});
我已将该脚本与此代码一起排入函数队列。php:

//add a custom jQuery script to Wordpress 
function add_pricing() {
wp_register_script(\'pricing\',
get_stylesheet_directory_uri() . \'/script-pricing.js\', 
array(\'jquery\'),
\'1.0\' );
wp_enqueue_script(\'pricing\');
}
add_action(\'wp_enqueue_scripts\', \'add_pricing\');
我已将其放置在WordPress页面中:

<div><label><input name="colorRadio" type="radio" value="red" /> One- year</label>
<label><input name="colorRadio" type="radio" value="green" /> Two-year</label>
<label><input name="colorRadio" type="radio" value="blue" /> Three-year</label></div>

<div class="red box">You have selected red</div>
<div class="green box">You have selected green</div>
<div class="blue box">You have selected blue</div>
该页面显示三个单选按钮。CSS隐藏了三行“You have selected”(您已选择)。但单击单选按钮时,相应的行不会显示出来。

我错过了什么,需要改进什么?提前感谢您的回复!

2 个回复
SO网友:Linnea Huxford

问题的原因很可能是jQuery处于兼容模式。这意味着您不能使用“$”短代码。

要使Javascript代码正常工作,请将所有“$”替换为“jQuery”

或者,将代码封装在匿名函数中,如下所示:

jQuery(document).ready(function( $ ) {

   // Put your jQuery code here.  

});
请参见:https://digwp.com/2011/09/using-instead-of-jquery-in-wordpress/

SO网友:Jerry.S

我可能错了,但我想用“满”是不是更好$handle (字符串)(必需)脚本名称(在您的情况下):script-pricing 而不是pricing.

/**
 * Register/Enqueue my script into footer for better page load
 * Read more: {@link http://www.tutorialrepublic.com/codelab.php?topic=faq&file=jquery-show-hide-div-using-radio-button}
 * @version  1.0
 * @since WordPress 4.4.1
 */
function wpse216359_add_pricing() {
    wp_register_script(\'script-pricing\',  get_stylesheet_directory_uri() . \'/script-pricing.js\', array(\'jquery\'), \'1.0\', true ); 
    wp_enqueue_script (\'script-pricing\'), get_stylesheet_directory_uri() . \'/script-pricing.js\', array(\'jquery\'), \'1.0\', true );
}
add_action(\'wp_enqueue_scripts\', \'wpse216359_add_pricing\');
有关更多信息,请查看codex 这个true 最后($in_footer): 如果此参数为true 脚本位于<body>.
这要求主题具有wp_footer() 钩住适当的位置。