各位,我jquery初学,现在的情况是下拉框全部从后台数据库中拼出来的,name值一样 
如下 :下拉框的name取值一样,都为selectName1,我想实现选择每个下拉框打印出该下拉框自己的已选值 
(不要跟我说在每个下拉框后面加上onChange()事件哈) 
先谢谢各位了! <script type="text/javascript" src="jslib/jquery.js"></script> 
<script language="javascript" type="text/javascript"> 
$(document).ready(function(){ 
$("select[@name=selectName1]").change(function() 
{        //如果这样由于id一样,排在第二个位置的下拉框,当change的时候 取不到值 ?  
       //alert($("#selectTest").val()); //显示下拉框中已选文本值 ,同上 
       //alert($("#selectTest option[@selected]").text());       //如果用以下,会把两个下拉框选中的值叠加起来,如选择美国的时候,打印的值为 "美国11" 怎么办? 
      // alert($("select[@name=selectName1] option[@selected]").text()); 
}); 
}); 
</script> <table align="center"> 
<tr> 
<td> 
<select id="selectTest" name="selectName1"> 
<option value="1">中国</option> 
<option value="2">美国</option> 
<option value="3">德国</option> 
</select> 
</td> 
</tr> <tr><td> 
<select id="selectTest" name="selectName1"> 
<option value="a1">11</option> 
<option value="a2">22</option> 
<option value="a3">33</option> 
</select> 
</td></tr> 
</table> 

解决方案 »

  1.   

    页面上的id应该是唯一的 。
    一组元素可以用下标.eq(0)  .eq(1)来取 。
    你这个还可以用$(this).val()来获取 !
      

  2.   

    为什么要这样写呢?Id最好取不一样的名字啊。还有这样写不是方便么?不才。我觉的应该这样写:
    $("#selectName1 option:selected").attr("text"); 这样写简单一些。
      

  3.   

    这样写: $("select[@name=selectName1] option:selected").text()
      

  4.   

     这样写:$("select[@name=selectName1] option:selected").text()
      

  5.   

    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
    <script language="javascript" type="text/javascript">  
    $(document).ready(function(){  
    $("select[name=selectName1]").change(function(e)  
    {    //如果这样由于id一样,排在第二个位置的下拉框,当change的时候 取不到值 ?   
      //alert($("#selectTest").val());  //显示下拉框中已选文本值 ,同上  
      //alert($("#selectTest option[@selected]").text());    //如果用以下,会把两个下拉框选中的值叠加起来,如选择美国的时候,打印的值为 "美国11" 怎么办?  
      // alert($("select[@name=selectName1] option[@selected]").text());   alert(e.target.value);//这个是选择值
    alert($("option:selected", e.target).text());//这个是文本
    });  
    });  
    </script>  <table align="center">  
    <tr>  
    <td>  
    <select id="selectTest" name="selectName1">  
    <option value="1">中国</option>  
    <option value="2">美国</option>  
    <option value="3">德国</option>  
    </select>  
    </td>  
    </tr>  <tr><td>  
    <select id="selectTest" name="selectName1">  
    <option value="a1">11</option>  
    <option value="a2">22</option>  
    <option value="a3">33</option>  
    </select>  
    </td></tr>  
    </table>
      

  6.   

    谢谢,$(this).val() 这样是可以的,你说的 "一组元素可以用下标.eq(0) .eq(1)来取" 我没试成功,就上面的例子能帮我写下吗? 谢谢,还有 这个 $(this).val()  是获得change后 下拉框已选值,我想在change事件中在选择新的值前获得该下拉框默认的选择值 怎么写啊?
    比如说 第一个默认选择的是 中国 ,我change后选择的是 美国 ,我怎么获得选择前的 “中国”值 ?
      

  7.   


    兄弟你这样跟我之前的写的是一样的,会把所有的text 联起来
      

  8.   

    $(document).ready(function(){ 
    $("select[name='selectName1']").change(function(e){  
    var countrName = $("select[name=selectName1] option:selected").text();
    alert(countrName);
    });
    });
    在测试一下。
      

  9.   

    谢谢了,兄弟,答的很好,再问个问题哈
     alert(e.target.value);//这个是选择值
     是获得change后 下拉框已选值,我想在change事件中在选择新的值前获得该下拉框默认的选择值 怎么写啊?
    比如说 第一个默认选择的是 中国 ,我change后选择的是 美国 ,我怎么获得选择前的 “中国”值 ?
      

  10.   


    谢谢了,兄弟,答的很好,再问个问题哈
    alert(e.target.value);//这个是选择值
    是获得change后 下拉框已选值,我想在change事件中在选择新的值前获得该下拉框默认的选择值 怎么写啊?
    比如说 第一个默认选择的是 中国 ,我change后选择的是 美国 ,我怎么获得选择前的 “中国”值 ?
      

  11.   

    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
    <script language="javascript" type="text/javascript">  
    $(document).ready(function(){  
    $("select[name=selectName1]").change(function(e)  
    {    //如果这样由于id一样,排在第二个位置的下拉框,当change的时候 取不到值 ?   
      //alert($("#selectTest").val());  //显示下拉框中已选文本值 ,同上  
      //alert($("#selectTest option[@selected]").text());    //如果用以下,会把两个下拉框选中的值叠加起来,如选择美国的时候,打印的值为 "美国11" 怎么办?  
      // alert($("select[@name=selectName1] option[@selected]").text());   alert(e.target.options[0].text);//默认的值
        alert(e.target.value);//这个是选择值
        alert($("option:selected", e.target).text());//这个是文本
    });  
    });  
    </script>  <table align="center">  
    <tr>  
    <td>  
    <select id="selectTest" name="selectName1">  
    <option value="1">中国</option>  
    <option value="2">美国</option>  
    <option value="3">德国</option>  
    </select>  
    </td>  
    </tr>  <tr><td>  
    <select id="selectTest" name="selectName1">  
    <option value="a1">11</option>  
    <option value="a2">22</option>  
    <option value="a3">33</option>  
    </select>  
    </td></tr>  
    </table>
      

  12.   

    Hi p2227:比如说已选值为第二个了,但是具体是哪个要从数据库查出来
    <select id="selectTest" name="selectName1">
    <option value="1">中国</option>
    <option value="2" selected="true">美国</option>
    <option value="3">德国</option>
    </select>
      

  13.   

    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
    <script language="javascript" type="text/javascript">  
    $(document).ready(function(){  
    $("select[name=selectName1]").each(function(){
    $(this).attr("dsov",$("option:selected", this).val()).attr("dsot",$("option:selected", this).text());
    });
    //dsov is short for DefaultSelectedOptionValue
    //dsot is short for DefaultSelectedOptionText$("select[name=selectName1]").change(function(e)  
    {    //如果这样由于id一样,排在第二个位置的下拉框,当change的时候 取不到值 ?   
      //alert($("#selectTest").val());  //显示下拉框中已选文本值 ,同上  
      //alert($("#selectTest option[@selected]").text());    //如果用以下,会把两个下拉框选中的值叠加起来,如选择美国的时候,打印的值为 "美国11" 怎么办?  
      // alert($("select[@name=selectName1] option[@selected]").text());   alert($(e.target).attr("dsov"));//默认的值
    alert($(e.target).attr("dsot"));//默认的值
        alert(e.target.value);//这个是选择值
        alert($("option:selected", e.target).text());//这个是文本
    });  
    });  
    </script>  <table align="center">  
    <tr>  
    <td>  
    <select id="selectTest" name="selectName1">  
    <option value="1">中国</option>  
    <option value="2">美国</option>  
    <option value="3">德国</option>  
    </select>  
    </td>  
    </tr>  <tr><td>  
    <select id="selectTest" name="selectName1">  
    <option value="a1">11</option>  
    <option value="a2">22</option>  
    <option value="a3">33</option>  
    </select>  
    </td></tr>  
    </table>