我有几个<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()
(忽略eand东西,尽管存储在类似的东西中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());
});