我有以下jQuery代码:
$('.active #search').on('mouseout', function () {
$('#search_box #search').not('.active').each(function(){
this.value = $('.active #search')[0].value;
})
});
它有效,但我必须两次调用$('。active #search')。如何在内部函数中引用$('。active #search')数组?
P / S:我知道我会抱怨给多个元素提供相同的ID,但这似乎是由Rails自动生成的(text_field_tag)。
答案 0 :(得分:2)
您可以执行以下操作。我添加了self = $(this)
$('.active #search').on('mouseout', function () {
var self = $(this);
$('#search_box #search').not('.active').each(function(){
this.value = self[0].value;
});
});
以下是关于'this'关键字的非常好解释的链接,由Jeffrey Way解释
答案 1 :(得分:2)
我认为this
是您正在寻找的:
$('.active #search').on('mouseout', function () {
var val = $(this)[0].value; //cache value of $('.active #search').
$('#search_box #search').not('.active').each(function () {
this.value = val;
})
});
答案 2 :(得分:1)
您可以使用$(this)
代替$('.active #search')
答案 3 :(得分:1)
有几种方法可以实现这一目标:
var activeSearch = $('.active #search');
activeSearch.on('mouseout', function () {
$('#search_box #search').not('.active').each(function(){
this.value = activeSearch.val();
})
});
请注意,由于这是您要查询的ID,因此您应该只有一个元素,因此您可以将activeSearch[0].value
替换为activeSearch.val();
$('.active #search').on('mouseout', function () {
var activeSearch = $(this);
$('#search_box #search').not('.active').each(function(){
this.value = activeSearch.val();
})
});
在事件处理程序$(this)
中将为您提供事件发送方的jquery对象。您可以通过忽略jquery并通过执行以下操作来使用简单元素来进一步简化它:
$('.active #search').on('mouseout', function () {
var activeSearch = this;
$('#search_box #search').not('.active').each(function(){
this.value = activeSearch.value;
})
});
这与上面相同,但你不处理jquery对象。
您最终使用的内容取决于您,但最终的代码段将是我的首选方式。