更新jquery时代码中的问题

时间:2011-05-29 15:52:05

标签: javascript jquery

我有这个代码。 适用于jquery 1.5.2,现在我更新到1.6并且删除按钮不起作用

here效果很好,但是here,按钮删除不起作用

<script type="text/javascript">
    $(document).ready(function() {
        $('#btnAdd').click(function() {
            var num     = $('.clonedInput').length;
            var newNum  = new Number(num + 1);

            var newElem = $('#input' + num).clone().attr('id', 'input' + newNum);

            newElem.children(':first').attr('id', 'name' + newNum).attr('name', 'name' + newNum);
            $('#input' + num).after(newElem);
            $('#btnDel').attr('disabled','');

            if (newNum == 5)
                $('#btnAdd').attr('disabled','disabled');
        });

        $('#btnDel').click(function() {
            var num = $('.clonedInput').length;

            $('#input' + num).remove();
            $('#btnAdd').attr('disabled','');

            if (num-1 == 1)
                $('#btnDel').attr('disabled','disabled');
        });

        $('#btnDel').attr('disabled','disabled');
    });
</script>

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我认为在jquery 1.6中,attr()函数已经改变,在某些情况下你应该使用prop()。在1.6.1中,他们重新引入了一些兼容性的变化。看看here了解prop()规范

取自jquery网站:

  

属性和属性之间的区别   属性可能很重要   具体情况。在jQuery之前   1.6,.attr()方法有时会考虑属性值   检索一些属性,哪些   可能导致不一致的行为。如   jQuery 1.6,.prop()方法   提供了一种显式检索的方法   属性值,而仅限.attr()   检索属性。

答案 1 :(得分:1)

关键是您必须正确使用attr()disabled是一个布尔属性,用于启用必须删除的元素,而不是将其设置为空字符串。请参阅:http://jsfiddle.net/zjcfN/

prop()工作比其他事情更容易发生。您可以(并且应该!)继续使用attr()来处理HTML元素属性,从jQuery 1.6开始,您还可以使用prop()来处理DOM对象属性。

以下在jQuery 1.6中完美运行:

// disable an element
$("input").attr("disabled", "disabled");
// enable an element
$("input").removeAttr("disabled");