我有很多选择作为这样的过滤器
<select name="color" data-options="katalog.php?cat=3" class="filter">
<option value="1">White</option>
<option value="2">Green</option>
</select>
但在Firebug中我收到错误,无法弄清楚原因
$('body').on("change", '.filter', function() {
$('#mainstage').load($(this).data('options') + '&' + $(this).attr('name') + '=' + $(this).attr('value'));
})
答案 0 :(得分:2)
您请求的网址为"katalog.php?cat=3&color=undefined"
,因为您不应使用attr()
来读取该值。使用jQuery的val()
方法,以便获得所选选项的值。
... '=' + $(this).val())
答案 1 :(得分:1)
错误发生在$(this).attr('value')
,它试图获取select元素本身的value属性,而不是获取选定值。只需找到所选的文字或值。
示例:
通过$(this).find(":selected").text()
$('body').on("change", 'select', function() {
$('#mainstage').load($(this).data('options') + '&' + $(this).attr('name') + '=' + $(this).find(":selected").text());
})
示例:强>
通过$(this).val()
$('body').on("change", 'select', function() {
$('#mainstage').load($(this).data('options') + '&' + $(this).attr('name') + '=' + $(this).val());
})
希望这有帮助