首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将html打开/关闭翻转开关添加到jquery?

如何将html打开/关闭翻转开关添加到jquery?
EN

Stack Overflow用户
提问于 2015-06-01 22:09:19
回答 3查看 1.2K关注 0票数 0

我试图在jquery中使用html/css,但无法让它工作。现在,当我单击与"vlabe“匹配的div时,它将根据状态打开或关闭。然而,我试图使用html/css开关从proto.io,但我无法使它工作。

现在,如果我有<div id='light'></div>,它将根据状态显示"On“或"off”。我需要将它添加/删除到<input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="" checked>

代码语言:javascript
复制
switchclick='';
    if (vdata == 'Off' ) {


    switchclick = 'onclick="SwitchToggle('+item.idx+', \'On\');"';
            vdata = 'Off';

    } else {



    switchclick = 'onclick="SwitchToggle('+item.idx+', \'Off\');"';
            vdata = 'On';
    }




 if( SwitchType == 'On/Off') {
// code to be executed if condition is true
$('#'+vlabel).html('<div '+switchclick+' >'+vdata+'</div>');

}

我希望我能解释我自己和我想做的事情,如果没有,请让我知道,不要投我反对票。我在努力。:)

完整的脚本供参考。

代码语言:javascript
复制
    function RefreshData()
{
    clearInterval($.refreshTimer);
    var jurl=$.domoticzurl+"/json.htm?type=devices&plan="+$.roomplan+"&jsoncallback=?";
    $.getJSON(jurl,
    {
        format: "json"
    },
    function(data) {
    if (typeof data.result != 'undefined') {

    $.each(data.result, function(i,item){
    for( var ii = 0, len = $.PageArray.length; ii < len; ii++ ) {
    if( $.PageArray[ii][0] === item.idx ) {     // Domoticz idx number
    var vtype=  $.PageArray[ii][1];     // Domotitcz type (like Temp, Humidity)
    var vlabel= $.PageArray[ii][2]; // cell number from HTML layout
    var vdesc=  $.PageArray[ii][3]; // description 
    var vattr=  $.PageArray[ii][4]; // extra css attributes
    var valarm= $.PageArray[ii][5];     // alarm value to turn text to red
    var SwitchType= item.SwitchType;        // Switch type "Dimmer""On/Off" "ECT"
    var vdata=  item[vtype];        // current value




//For Dimmers, if a Dimmer is "off it shows off, If on it shows the percent with a %"
    if (item.Status == 'Off'){
        DimmerLVL = 'Off';
    } else {

        DimmerLVL = (+item.Level+ '%');
        }




    // create switchable value when item is switch
            switchclick='';
        if (vdata == 'Off' ) {


        switchclick = 'onclick="SwitchToggle('+item.idx+', \'On\');"';
                vdata = 'Off';

        } else {



        switchclick = 'onclick="SwitchToggle('+item.idx+', \'Off\');"';
                vdata = 'On';
        }




if( SwitchType == 'On/Off') {
    // code to be executed if condition is true
    $('#'+vlabel).html('<div '+switchclick+' >'+vdata+'</div>');

    } else if (SwitchType == 'Dimmer') {
    // code to be executed if condition is false
    $('#'+vlabel).html('<div>'+DimmerLVL+'</div>');

    } else {
    // code to be executed if condition is false
    $('#'+vlabel).html('<div>123'+vdata+'</div>');
}




    // scene alle verlichting uit: http://192.168.0.100:8080/json.htm?type=command&param=switchscene&idx=2&switchcmd=ON

    // if extra css attributes. Make switch not switchable when it is protected.




    $('#desc_'+vlabel).html(vdesc);

    }
    }
    });
    }
    });
    $.refreshTimer = setInterval(RefreshData, 8000);
    }


    $(document).ready(function() {
    $.roomplan=2;       // define roomplan in Domoticz and create items below.
    $.domoticzurl="http://192.168.1.125:8080";
    //format: idx, value, label, description, [override css], [alarm value]
    $.PageArray = [


    ['4',   'Status',       'cell6',    'Lamp',],
    ['2',   'Status',       'cell7',    'TV',],


    ];


RefreshData();


});  


function SwitchToggle(idx, switchcmd)
    {
     console.log('function called');
     $.ajax({
        url: "http://192.168.1.125:8080/json.htm?type=command&param=switchlight" + "&idx=" + idx + "&switchcmd=" + switchcmd + "&level=Level",
        async: false, 
        dataType: 'json',
        success: function(){
        console.log('SUCCES');
        },
        error: function(){
        console.log('ERROR');
        }
    });
    RefreshData();
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-01 22:45:31

这个对你有用吗?

代码语言:javascript
复制
$('#light').on('click', function() {
  
  var state = $('#light').html();
  var $checkbox = $('.onoffswitch-checkbox');

  $('#light').html(state == 'Off' ? 'On' : 'Off');

  $checkbox.prop('checked', !$checkbox.prop('checked'));
})
代码语言:javascript
复制
#light {
  background-color: red;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


The checkbox:
<input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="" checked>

<br>
<br>Click the red div, The switch is:
<div id="light">On</div>

票数 1
EN

Stack Overflow用户

发布于 2015-06-01 22:27:50

我不完全确定我是否正确地回答了这个问题,但据我所知,您想要删除选中的属性吗?他们在http://api.jquery.com/prop/有这方面的文档

为了简洁起见:

关于布尔属性,考虑由HTML标记定义的DOM元素,并假设它位于名为elem的JavaScript变量中:

$( elem ).attr(“选中”) (1.6.1+)“选中”(字符串)将随着复选框状态的变化而改变。

票数 1
EN

Stack Overflow用户

发布于 2015-06-01 23:18:11

所以我用肮脏的方式增加了

代码语言:javascript
复制
<div  class="onoffswitch"><input '+switchclick+' type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch" '+vdata+' ><label class="onoffswitch-label" for="myonoffswitch"><span class="onoffswitch-inner"></span><span class="onoffswitch-switch"></span>   </label></div>

代码语言:javascript
复制
$('#'+vlabel).html('');

整行代码如下所示

代码语言:javascript
复制
$('#'+vlabel).html('<div  class="onoffswitch"><input '+switchclick+' type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch" '+vdata+' ><label class="onoffswitch-label" for="myonoffswitch"><span class="onoffswitch-inner"></span><span class="onoffswitch-switch"></span>   </label></div>');

我知道这是一种肮脏的做法,但目前看来是可行的:

感谢所有想帮忙的人:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30584150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档