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

非常怪异的Jquery问题



function cgtest()
        {
            var level=$("#SelectM").val();
            alert(level);//不管怎么选择下拉列框,每次打印出来都是3
        }


不管怎么选择下拉列框,每次打印出来都是3

------解决方案--------------------
用伪元素  :checked  好像
------解决方案--------------------
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
</script>
<script>
$(document).ready(function(){
  $("p").click(function(){
    $(this).hide();
  });
});

function cgtest(){
alert($("#SelectM").val());
}
</script>
</head>
<body>
<select id="SelectM" style="width:170px" onchange="cgtest()"name="SelectM">
<option value="0">普通</option>
<option value="1">vip1</option>
<option value="2">vip2</option>

<option value="3" selected="selected">vip3</option>
<option value="4">vip4</option>
<option value="5">vip5</option>
</select>
<p>如果您点击我,我会消失。</p>
<p>点击我,我会消失。</p>
<p>也要点击我哦。</p>
</body>
</html>

------解决方案--------------------
用3楼的代码是好用的,具体是什么浏览器出现这种问题,但是很明显弹出的信息是没被选择之前的默认值,看看onchange事件有没有走进去
------解决方案--------------------
引用:



function cgtest()
        {
            var level=$("#SelectM").val();
            alert(level);//不管怎么选择下拉列框,每次打印出来都是3
        }


不管怎么选择下拉列框,每次打印出来都是3

原因是你选中的是下拉菜单中的选项,你那么写是获得下拉菜单的值(默认为第一个选项),因此永远都是3
改成
var level=$("#SelectM option:selected").val();
试一下
------解决方案--------------------
<!DOCTYPE HTML>
<html>
<head>
<meta charset="gbk" />
<title></title>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<style>

</style>
</head>
<body>
<select name="test" id="test">
<option value="1">1</option>
<option value="2">2</option>
<option value="3"&