2

http://liveweave.com/rFqNTl

プロパティ セレクターを使用して修正し、要素の変更をトリガーします - http://liveweave.com/ZTirGp

メニューとして機能するラジオボタンがいくつかあります。デザインがチェックされるとデザイナー div が表示され、コードがチェックされるとテキストエリアが表示されます。

私が遭遇した 1 つの問題は、[新規] をクリックしたときに #designer に対して on 関数を宣言して、その div を表示し、他のものを非表示にするようにチェックされていることです。

私が問題を抱えていることを示すために、デモとともに以下のコードを追加しました。

HTML

<div id='header'>
    <center>
        <div class="menubtn" id='newdoc'>
            <input name="opt" id="opt-1" checked="checked" type="radio">
            <label for="opt-1">New</label>
        </div>
        <div class="menubtn" style='display:none;' id='openload'>
            <input name="opt" id="opt-2" type="radio">
            <label for="opt-2">Browse</label>
        </div>
        <div class="menubtn" onclick='saveTextAsFile()'>
            <input name="opt" id="opt-3" type="radio">
            <label for="opt-3">Save</label>
        </div>
        <div class="menubtn" id='dropbox'>
            <input name="opt" id="opt-4" type="radio">
            <label for="opt-4">Dropbox</label>
        </div>
        <div class="menubtn" id='designer'>
            <input name="opt" id="opt-5" type="radio">
            <label for="opt-5">Design</label>
        </div>
        <div class="menubtn" id='settings'>
            <input name="opt" id="opt-6" type="radio">
            <label for="opt-6">Settings</label>
        </div>
        <div class="menubtn" id='codecanvasdisplay'>
            <input name="opt" id="opt-7" type="radio">
            <label for="opt-7">Code</label>
        </div>
        <div class="menubtn" id='fullcode'>
            <input name="opt" id="opt-8" type="radio">
            <label for="opt-8">Full Code</label>
        </div>
        <div class="menubtn" style='display:none;' id='intcolorpick'>
            <input name="opt" id="opt-9" type="radio">
            <label for="opt-9">Color Picker</label>
        </div>
    </center>
</div>

CSS

#header {
    color: #2234cb;
    text-shadow: 0px 0px 2em #fff;
    background:#e0e2f9; /* Old browsers */
    background:-moz-linear-gradient(top,  #e0e2f9 0%, #d7dbf8 100%); /* FF3.6+ */
    background:-webkit-gradient(linear, left top, left bottom, color-stop(0%,#e0e2f9), color-stop(100%,#d7dbf8)); /* Chrome,Safari4+ */
    background:-webkit-linear-gradient(top,  #e0e2f9 0%,#d7dbf8 100%); /* Chrome10+,Safari5.1+ */
    background:-o-linear-gradient(top,  #e0e2f9 0%,#d7dbf8 100%); /* Opera 11.10+ */
    background:-ms-linear-gradient(top,  #e0e2f9 0%,#d7dbf8 100%); /* IE10+ */
    background:linear-gradient(to bottom,  #e0e2f9 0%,#d7dbf8 100%); /* W3C */
    filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#e0e2f9', endColorstr='#d7dbf8',GradientType=0 ); /* IE6-9 */
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    white-space: nowrap;
}

#header input[type="radio"] { display:none; }
#header div { display:inline-block; margin:0; }

#header label {
    cursor: pointer;
    display: inline-block;
    margin:.25em;
    padding:.7em;
    border-radius:50em;
    font: 12px arial, sans-serif;
    color: #444;
    text-shadow: 0px 0px .25em #fff;
    background:#f6f7fd; /* Old browsers */
    background:-moz-linear-gradient(top,  #f6f7fd 0%, #e0e2f9 100%); /* FF3.6+ */
    background:-webkit-gradient(linear, left top, left bottom, color-stop(0%,#f6f7fd), color-stop(100%,#e0e2f9)); /* Chrome,Safari4+ */
    background:-webkit-linear-gradient(top,  #f6f7fd 0%,#e0e2f9 100%); /* Chrome10+,Safari5.1+ */
    background:-o-linear-gradient(top,  #f6f7fd 0%,#e0e2f9 100%); /* Opera 11.10+ */
    background:-ms-linear-gradient(top,  #f6f7fd 0%,#e0e2f9 100%); /* IE10+ */
    background:linear-gradient(to bottom,  #f6f7fd 0%,#e0e2f9 100%); /* W3C */
    filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#f6f7fd', endColorstr='#e0e2f9',GradientType=0 ); /* IE6-9 */
}
#header label:hover { color: #111; background: #f6f7fd; }
#header label:active { color: #111; background: #c1c5f6;}
#header input[type="radio"]:checked + label { color: #e0e2f9; background: #666; box-shadow:inset 0 0 .25em #000; text-shadow: 0px 0px .25em #e0e2f9; }

JQuery/JavaScript

// Call New
$('#newdoc').click(function() {
    $("#designer")[0].click();
    code.val('');
    preview.html(code.val());
});

$('#opt-1').click(function(){
    if($('#opt-1').attr('checked')=="checked"){
        $(this).attr('checked', false);
        $('input#opt-5').attr('checked', true);
    }else{
        $('input#opt-5').attr('checked', false);
    }
});

// Call Designer UI
$('#designer').on('change',function() {
    $('#canvasbg, #canvas').show();
    $('#settingsdisplay').hide();
    $("#fullwebsitecode").hide();
    $("#bottom, #code").hide();
    return false;
});

// Call Settings
$('#settings').on('change',function() {
    $('#settingsdisplay').show();
    $('#canvasbg, #canvas, #bottom, #code').hide();
    $("#fullwebsitecode").hide();
    return false;
});

// Call Show Code
$('#codecanvasdisplay').on('change',function() {
    $("#bottom, #code").show();
    $('#settingsdisplay').hide();
    $('#canvasbg, #canvas').hide();
    $("#fullwebsitecode").hide();
    return false;
});
4

2 に答える 2

3

これはあなたが望むものです:$("#designer").trigger('change');

「New Doc」ハンドラを次のように変更します。

// Call New
$('#newdoc').click(function() {
    code.val('');
    preview.html(code.val());
    $("#designer").trigger('change');
});
于 2013-10-11T05:08:19.620 に答える
1

trigger特定の要素にバインドされたイベントをトリガーするために使用できます。

$("#designer").trigger('click');

また、コードの多くは、radio 要素を含む div で「change」イベントを使用しています。そのため、変更イベントは入力から発生し、div レベルで処理しています。正当な理由がない限り、入力は実際には必要なく、div 要素でクリック イベントを使用できます。はるかに簡単です。

私が言及したイベントに変更を加えたコードは次のとおりです。 http://liveweave.com/Lsmg7B

ドキュメントと関連資料

于 2013-10-11T05:13:34.063 に答える