日期:2014-05-16  浏览次数:20418 次

奇妙的错误 —— 你能看出来吗?
JScript code
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="jquery/jquery-1.7.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $.fn.extend({
            "setJson": function (json) {
                var id = this.id;
                var $form = $(this);
                //清空原有表单
                $form.find("select").each(function () {
                    this.selectedIndex = 0;
                });
                $form.find(":hidden").val("");  //# B 必须注释这一行,换成下一行( #C ), IE8(部分电脑) 和 Chrome 后面的行( #D )才能正常运行, 为什么?
                //clearHidden(this.id);         //# C

                $form = $("#");
                //给表单赋值
                $("#sel").val("1"); //# D
            }
        });

        function clearHidden(id) { 
            $("#"+id).find(":hidden").val("");
        }

        function test() {
            var o = { "sel": "1" };
            $("#bd").setJson(o);
        }
    </script>
</head>
<body id="bd">
    <input type="hidden" value="1" id="vtid" />
    <select id="sel">
        <option value="0">---请选择---</option>
        <option value="1">第一项</option>
        <option value="2">第二项</option>
    </select>
    <input type="button" value="test" onclick="test()" />
</body>
</html>



------解决方案--------------------
回帖有分??
------解决方案--------------------
先弄清楚this指的是什么
------解决方案--------------------
$form.find(":hidden").val(""); 这里的 $form 为 select 对象
这个对象 不存在 属性为hidden 的子元素
所以 $form.find(":hidden").val(""); 这语句的赋值没有执行