0

When select one as input want it to display .toggle, but it's only hiding it so far? 这也可能是一个很长的镜头,但我怎样才能编写这段代码,以便我可以再次使用它,而不是编写新的类名。

这是我的代码脚本:

$(function () {
if ($(".binary").val() == "0"){
 $( ".toggle" ).hide();
} else {
 $( ".toggle" ).show();
}
});

我的html

<div class="option checkbox">
  <label class="field_wrap">
    <div class="label">Show Borders</div>
      <div class="field">
      <select class="binary tug" name="show_post_borders">
         <option value="0"></option>
         <option value="1"></option>
      </select>
    </div>
  </label>
</div> 

<div class="toggle">Filer</div>
4

4 回答 4

2

您的 Javascript 仅在页面加载时执行一次。根据您提供的信息,我认为您真正想要做的是:

$(function () {
  $(".binary").change(function() {
    if ($(this).val() == "0"){
      $( ".toggle" ).hide();
    } else {
      $( ".toggle" ).show();
    }
  });
});

不同之处在于,您在此处设置了一个函数,该函数将在每次发生更改事件时运行(= 您在选择框中更改您的选择)。

于 2013-10-24T21:28:42.610 回答
0

尝试将您的函数包装在更改处理程序中,如下所示:

$(function () {
    $('.binary').change(function() {
        if ($(".binary").val() == "0"){
            $( ".toggle" ).hide();
        } else {
            $( ".toggle" ).show();
        }
});
于 2013-10-24T21:27:27.810 回答
0

你提到你想要可重用的代码。尝试这个:

$(function () {
    $(".toggle_field").change(function() {
        var field = $(this);
        if (field.val() == field.data("toggle-show-val")) {
            $(field.data("toggle-selector")).show();
        } else {
            $(field.data("toggle-selector")).hide();
        }
    });
});

HTML

<div class="option checkbox">
  <label class="field_wrap">
    <div class="label">Show Borders</div>
      <div class="field">
      <select class="binary tug toggle_field" data-toggle-selector=".toggle" data-toggle-show-val="1" name="show_post_borders">
         <option value="0"></option>
         <option value="1"></option>
      </select>
    </div>
  </label>
</div> 

<div class="toggle">Filer</div>

小提琴:http: //jsfiddle.net/qCeJ8/

于 2013-10-24T21:36:10.710 回答
0

这样的事情应该是你想要做的:http: //jsfiddle.net/BbXYt/

$(document).ready(function(){
    $(".binary").change(function(){
        if($(".binary").val() == "0"){
            $( ".toggle" ).hide();
        } else {
            $( ".toggle" ).show();
        }
    });

    $( ".toggle" ).hide();
});

HTML:

<div class="option checkbox">
  <label class="field_wrap">
    <div class="label">Show Borders</div>
      <div class="field">
      <select class="binary tug" name="show_post_borders">
         <option value="0">0</option>
         <option value="1">1</option>
      </select>
    </div>
  </label>
</div> 
<div class="toggle">Filer</div>
于 2013-10-24T21:31:41.247 回答