0

我正在尝试用字符串填充数组,将添加的元素是单击 <\li> 的 HTML,我可能正确填充它。

我的问题是当用户再次单击选中的链接时,我想从数组中删除此项

这是一个代码示例:

$(document).ready(function(){
    var chosen = [];
    var chosenCounter = 0;

            find("ul").find("li").click(function(){
        var checkBox = $(this).find("img").first();
        var checkBoxSrc = checkBox.attr("src");
        if(checkBoxSrc == "images/unchecked.png"){
            checkBoxSrc = "images/checked.png";
            checkBox.attr("src",checkBoxSrc);
            checkBox = "";
            checkBoxSrc = "";
            var temp = this.outerHTML;
            chosen[chosenCounter] = temp;
            chosenCounter ++;
        }
        if(checkBoxSrc == "images/checked.png"){
            checkBoxSrc = "images/unchecked.png";
            checkBox.attr("src",checkBoxSrc);
            checkBox = "";
            checkBoxSrc = "";



    for (var j =0; j<=chosen.length; j++){
            var tempRemove = this.outerHTML;
            chosen.splice( chosen.indexOf( tempRemove ), 1 );
            tempRemove = '';
        }
    }
});

});

我一直在尝试我在互联网上找到的所有功能和方式..但结果效果不佳,我将非常感谢您的更正和解释。提前谢谢大家。

4

1 回答 1

0

我已经重写了代码以更好地工作。有很多问题,但这是我测试的固定版本。

  • 您的原始代码有一个if语句,然后是另一个if语句。你需要一个 if 然后一个else if
  • 请注意,在查找子元素时,我只使用 $('img', this) 而不是 find 运算符和 first()。
  • 使用 ID 而不是 HTML
  • 对于调试,那里有一个 console.log 语句。删除它以便它在 IE 中工作。
  • 要将元素添加到数组中,请使用push
  • 无需循环拼接即可删除该项目。只需调用 splice 一次。

    $(文档).ready(函数 () {

    var chosenIDs = [];
    
    $("ul li").click(function () {
        var checkBox = $('img', this);
        var checkBoxSrc = checkBox.attr("src");
        var id = $(this).attr('data-id');
        console.log(id + ' ' + chosenIDs.length + ' ' + checkBoxSrc);
    
        if (checkBoxSrc == "images/unchecked.png") {
            checkBoxSrc = "images/checked.png";
            checkBox.attr("src", checkBoxSrc);
    
            chosenIDs.push(id);
        }
        else if (checkBoxSrc == "images/checked.png") {
            checkBoxSrc = "images/unchecked.png";
            checkBox.attr("src", checkBoxSrc);
    
            chosenIDs.splice(chosenIDs.indexOf(id), 1);
        }
    });
    

    });

于 2013-02-16T23:54:54.250 回答