0

我正在尝试让 jquery IE 占位符修复工作。它在 IE9 中运行良好,但在 IE8 中我不断收到警报...

'attr(...)' 为 null 或不是对象

这是我正在使用的代码。难道我做错了什么?

<!--[if lte IE 9 ]>
    <script>
        // IE Placeholder Fix
        $(function() {
            if ($('input[placeholder]').attr('placeholder').val() != '') {
                var ph = $('input[placeholder]').attr('placeholder');
                $('input[placeholder]').blur();
                if ($('input[placeholder]').attr('value').val() == 0) {
                    $('input[placeholder]').attr('value', ph);
                    $('input[placeholder]').css('color','#999999');
                };
                $('input[placeholder]').click(
                    function() {
                        $(this).css('color','#000000');
                        if ($(this).attr('value') == ph) {
                            $(this).attr('value','');
                    }
                });
            }
        });
    </script>
<![endif]--> 

更新:

使用下面的评论我想出了......

<!--[if lte IE 9 ]>
    <script>
        // IE Placeholder Fix
        $(function() {
            if ($('input[placeholder]').length != 0) {
                var ph = $('input[placeholder]').attr('placeholder');
                $('input[placeholder]').blur();
                if ($('input[placeholder]').attr('value') == '') {
                    $('input[placeholder]').attr('value', ph);
                    $('input[placeholder]').css('color','#999999');
                };
                $('input[placeholder]').click(
                    function() {
                        $(this).css('color','#000000');
                        if ($(this).attr('value') == ph) {
                            $(this).attr('value','');
                    }
                });
            }
        });
    </script>
<![endif]--> 
4

1 回答 1

1

在空对象上调用方法或属性将导致您遇到的错误。如果您不确定对象是否已定义,请在引用任何子对象之前对其进行测试。

于 2012-10-23T18:24:25.817 回答