簡體   English   中英

Jquery attr函數在IE 9中不起作用

[英]Jquery attr function not working in IE 9

找到下面的代碼。 我想在IE中使工作具有相同的功能。 我正努力讓它在IE 9上運行。

<html>
    <head>
    <script src="https://code.jquery.com/jquery-1.11.1.js"></script>
    <script type="text/javascript">
        var colors= ["#99b433", "#00a300", "#1e7145"];
        $(document).ready(function(){
            addBarColor();
        });

        var addBarColor = function(){
            $('#lineColors').html("");
            for(var color=0; color<colors.length; color++){
                //Loading List of colors
                var chartBarColor = colors[color];
                var li = document.createElement('li');
                li.style.width = "50px";
                li.style.backgroundColor = chartBarColor;

                //Adding Remove button to it.
                var remove = document.createElement('span');
                remove.id = "remove"+color;
                remove.style.cursor="pointer";
                remove.style.marginLeft = "40px";

                //remove.onclick = function(){removeBarColor(color)};

                //Adding x image
                var removeImg = document.createElement('img');
                removeImg.src = "https://cdn1.iconfinder.com/data/icons/diagona/icon/10/101.png";

                //Appedning everything to UL
                remove.appendChild(removeImg);
                li.appendChild(remove);
                $('#lineColors').append(li);

                $("#remove"+color).attr('onclick', 'removeBarColor(\''+color+'\')');
            }
        }

        //Removing the color from the array
        var removeBarColor = function (index){
            alert(index);
            colors.splice(index, 1);
            console.log(colors);
            addBarColor();
        };
    </script>
    </head>
    <body>
        <ul id="lineColors">
        </ul>
    </body>
</html>

Jquery的attr()函數似乎在IE 9中不起作用。或者我嘗試了這個remove.onclick = function(){removeBarColor(color)}; 這似乎也不適用於IE9。

希望我的問題很清楚。 感謝您的期待。

我假設你在談論這個attr線:

$("#remove"+color).attr('onclick', 'removeBarColor(\''+color+'\')');

無論它是否在其他地方工作,如果你正在使用jQuery(或者甚至,坦率地說,如果你不是),不要像這樣掛鈎事件處理程序; 使用現代技術連接處理程序,尤其是 因為你已經使用的lib很容易:

$("#remove"+color).on('click', removeBarColor.bind(null, color));

這依賴於ES5的Function#bind (可以是shimmed); 或者,您可以使用jQuery的proxy

$("#remove"+color).on('click', $.proxy(removeBarColor, null, color));

實例

無論哪種方式,這是什么代碼所做的就是創建一個新的函數,調用它時,會調用removeBarColor傳遞color作為index參數(和設置this到什么特別的,好了,好了,在寬松模式下,它會在window中,嚴格模式它將為null 然后它將該函數指定為click處理程序。

另一種方法是保存元素上的顏色,然后通過查看被單擊的元素使removeBarColor工作,但上面是minimal-mods方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM