0

我有代码:

<div id="displayData_length" class="dataTables_length">
  <label>
     Show <select name="displayData_length" size="1" aria-controls="displayData">
             <option value="10" selected="selected">10</option>
             <option value="25">25</option>
             <option value="50">50</option>
             <option value="100">100</option>
           </select>
  </label>
</div>

当我选择选项时,我想使用 alert() 并显示值。我的代码:

$(document).ready(function() {
    $('select[name=displayData_length]').bind('change', function(event) {
            alert(this.val());
        });
 });

但是不好,有什么问题吗?

4

7 回答 7

1

应该是这样的:

$('select[name=displayData_length]').bind('change', function(event) {
    alert($(this).val());
});

在 jQuery 事件处理程序中,this总是指向 DOM 元素,而不是用 jQuery 包装。

于 2012-11-20T12:07:43.753 回答
1

.val是一个 jQuery 函数,this只是一个 DOM 节点。您需要访问$(this).val(),或this.value

于 2012-11-20T12:07:46.960 回答
1

尝试用 jQuery 对象包装

改变这个

  alert(this.val());

 alert($(this).val());
于 2012-11-20T12:08:09.707 回答
1

您必须包装this在 jQuery 对象中。

$('select[name=displayData_length]').bind('change', function(event) {
    alert($(this).val());
});

另请注意,此选择器更快

$('select', '#displayData_length') // faster
于 2012-11-20T12:08:26.150 回答
1

包装this在一个 jQuery 对象中:

alert($(this).val());
于 2012-11-20T12:08:27.130 回答
0

用这个 :

$('select[name=displayData_length]').change(function() {
     alert($(this).val());    # for value
     alert($(this).find('option:selected').text());   # for text (UPDATED)
});
于 2012-11-20T12:07:55.340 回答
0

试试这个

<select name="displayData_length" size="1" aria-controls="displayData" id="dia">
<option value="10" selected="selected">10</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
</select>  

<script>
$("#dia").change(function () {
     var selctedValue = "";
     $("select option:selected").each(function () {
     selctedValue += $(this).val();
    alert(selctedValue);
    });
});
</script>
于 2012-11-20T12:10:34.880 回答