【问题标题】:Convert script from Mootools to Jquery [closed]将脚本从 Mootools 转换为 Jquery [关闭]
【发布时间】:2013-03-22 22:14:41
【问题描述】:

我有这个用 Mootools 编写的脚本。

当任何复选框被选中时,隐藏的输入就会改变。脚本检查每个检查过的图像,从检查过的图像中生成字符串 - 用逗号分隔。我需要将此 Mootools 脚本转换为 jQuery。

jsFiddle Mootools script

HTML:

<form>
    <div class="img_container">
        <img src="http://ynternet.sk/test/bg_1.png" style="border:2px solid gray;" /><br />
        <input type="checkbox" name="bg_1.jpg" checked="yes"  />
    </div>
    <div class="img_container">
        <img src="http://ynternet.sk/test/bg_2.png" style="border:2px solid gray;" /><br />
        <input type="checkbox" name="bg_2.jpg" checked="yes"  />
    </div>
    <div class="img_container">
        <img src="http://ynternet.sk/test/bg_3.png" style="border:2px solid gray;" /><br />
        <input type="checkbox" name="bg_3.jpg" checked="yes" />
    </div>

<input type="hidden" value="bg_1.jpg,bg_1.jpg,bg_3.jpg" name="selected_img">

Mootools

var checks = document.getElements('input[type="checkbox"]');
var hidden = document.getElements('input[type="hidden"][name="selected_img"]')[0];
checks.addEvent('change',function(e){
    var checkbox = e.target;
    var img = checkbox.getPrevious('img');
    var checked = checkbox.get('checked');
    if(checked){
      img.setStyle('border','2px solid gray');
    }
    else{
      img.setStyle('border',null);
    }

    setInputHidden();
});

function setInputHidden(){
    var inputs_checked = document.getElements('input[type="checkbox"]:checked');  
    var arr_names = inputs_checked.get('name');
    hidden.set('value',arr_names.join(','));
    alert(hidden.value);
}

【问题讨论】:

    标签: jquery input mootools hidden checkbox


    【解决方案1】:
    $('input[type=checkbox]').change(function (e) {
        if ($(this).is(':checked')) {
            $(this).parent().find('img').css({
                'borderLeft': '2px solid gray',
                'borderRight': '2px solid gray',
                'borderTop': '2px solid gray',
                'borderBottom': '2px solid gray',
            });
        } else {
            $(this).parent().find('img').css({
                'borderLeft': '0',
                'borderRight': '0',
                'borderTop': '0',
                'borderBottom': '0',
            });
        }
    
        setInputHidden();
    });
    
    function setInputHidden() {
        var arr_names = new Array();
        $('input[type="checkbox"]:checked').each(function () {
            arr_names.push($(this).attr('name'));
        });
        $('input[type=hidden][name=selected_img]').val(arr_names.join(','));
        alert($('input[type=hidden][name=selected_img]').val());
    }
    

    【讨论】:

    • 谢谢,但它不起作用:( jsfiddle.net/ynternet/pfJYh/12
    • 做了一些小的修改。现在,这对输入进行了所有操作,但在 jsfiddle 中,由于某种原因不会切换图像边框。我马上解决这个问题
    • 谢谢你,它很棒 :) 我有一个问题......当我按下 jsFiddle 上的 JSHint 按钮时,它说,在这一行中有一些错误“var arr_names = new Array(); “......只是为了我的好奇,为什么这被标记为错误? :)
    • 数组是大写的,应该小写以确保它在所有浏览器中绝对有效。
    • 我又做了一些编辑,删除了内联样式来代替 css 类,使用 .on('change', function() {}),用 console.log 交换警报,用 [] 交换新的 Array():jsfiddle.net/sperske/kmMmy
    猜你喜欢
    • 2010-09-15
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2013-11-06
    相关资源
    最近更新 更多