4

我正在尝试构建类似 wordpress 选项的东西,用于在创建和文章时切换字段可见性。我所构建的依赖于$.click使用相应字段名称切换父级的函数,我想知道如果选中该复选框,那么最好的方法是什么,因为如果你选中一个,我的代码会搞砸框并重新加载页面,因为它是一次点击,而不是如果实际选中了该框。提前致谢!

http://jsfiddle.net/zgrRd/1/

HTML

<input type="checkbox" name="title">
<span class="caption">Title</span>

<div class="hidden">
  <h2>Title</h2>
  <input type="text" name="title">
  <span class="caption">Lorem</span>
</div>

jQuery

$('input[type="checkbox"]').click(function(){
    var item = $(this).attr('name');
    $('input[name="'+item+'"][type="text"]').parent().toggle();
});
4

3 回答 3

8

假设您在外部控制复选框的选中状态...

演示:http: //jsfiddle.net/zgrRd/5/

换句话说,无论复选框处于何种状态,都会在页面加载时进行评估,因此如果未选中某个框,则相应的元素将开始隐藏。因此,如果您在服务器端设置一个选中该框的值,则此客户端 JavaScript 应该正确评估它。

JavaScript

function evaluate(){
    var item = $(this);
    var relatedItem = $("#" + item.attr("data-related-item")).parent();

    if(item.is(":checked")){
        relatedItem.fadeIn();
    }else{
        relatedItem.fadeOut();   
    }
}

$('input[type="checkbox"]').click(evaluate).each(evaluate);

HTML

<input type="checkbox" data-related-item="title1">
<span class="caption">Title</span>

<div class="hidden">
  <h2>Title</h2>
  <input type="text" id="title1">
  <span class="caption">Lorem</span>
</div>
<hr>
<input type="checkbox" data-related-item="title2" checked>
<span class="caption">Title</span>

<div class="hidden">
  <h2>Title</h2>
  <input type="text" id="title2">
  <span class="caption">Lorem</span>
</div>

注意我对data-*属性的使用。这避免了使用name一个字段的属性来指示与另一个字段的关系。您可以合法地命名这些属性,只要它们以 . 为前缀即可data-

于 2013-03-29T22:48:46.270 回答
0

我认为,Jquery UI Save State Using Cookie是您在重新加载之间控制状态的缺失部分吗?

于 2013-03-29T22:48:22.427 回答
0

HTML

<input type="checkbox" id="cbxShowHide"/><label for="cbxShowHide">Show/Hide</label>
<div id="block">Some text here</div>

css

#block{display:none;background:#eef;padding:10px;text-align:center;}

javascript/jquery

$('#cbxShowHide').click(function(){
this.checked?$('#block').show(1000):$('#block').hide(1000); //time for show
});
于 2014-09-15T11:32:03.627 回答