我有几个<select>
盒子都使用相同的前缀,我想设置一个递归函数来基本上为我完成这项工作。
$('[id^="by_"]').change(function(e)
{
var elem = e;
console.log(e.value);
});
基于这段代码,我的意图很清楚吗?我在正确的轨道上吗?
控制台打印出:undefined
我有几个<select>
盒子都使用相同的前缀,我想设置一个递归函数来基本上为我完成这项工作。
$('[id^="by_"]').change(function(e)
{
var elem = e;
console.log(e.value);
});
基于这段代码,我的意图很清楚吗?我在正确的轨道上吗?
控制台打印出:undefined
我认为您走在正确的轨道上-您使用的选择器与前缀“by_”匹配,并且您将更改事件绑定到所有这些选择器。确保你把这个$(document).ready
或类似的。您对此代码有任何问题吗?我不使用e
参数,而是this
在函数内部使用来引用元素并$(this)
获取它的 jQuery 对象。因此,要获得价值,您可以使用:
this.value
// or
$(this).val()
(忽略e
and东西,尽管存储在类似的东西中elem
并不是一个坏主意,这样您就可以引用它而不是每次需要时都重新创建 jQuery 对象)$(this)
elem
当使用 jQuery 对事件使用回调时,回调的(第一个)参数是一个event
对象,它解释了有关发生的事件的许多事情(http://api.jquery.com/category/events/event-object/)并且确实不持有元素 - 这就是this
目的!
e
在您的代码中是没有value
属性的事件对象,您应该使用this
:
$('[id^="by_"]').change(function(e) {
var elem = this;
console.log(this.value);
});
或者如果你想使用event
对象,你可以使用target
属性:
e.target.value
既然你已经在使用 jQuery,为什么不这样:
$('[id^="by_"]').change(function(e)
{
var $elem = $( this );
console.log( $elem.val() );
});
是不是更像这样:
$('[id^="by_"]').change(function()
{
console.log($('option:selected',this).val());
});