再次引用jQuery链中的原始选择
我有一个clicker div和一个popup div。clicker div有一个“originalcolor”属性,它描述了clicker最初的颜色。当双击弹出窗口时,我想隐藏弹出窗口,并将点击器的颜色更改回其originalcolor属性中定义的颜色。下面的代码可以工作,但似乎应该有一种更干净的方法来获得第3行中的第二次clicker选择,而不是重复$'clicker' 您可以向.css传递函数,而不是值:再次引用jQuery链中的原始选择,jquery,Jquery,我有一个clicker div和一个popup div。clicker div有一个“originalcolor”属性,它描述了clicker最初的颜色。当双击弹出窗口时,我想隐藏弹出窗口,并将点击器的颜色更改回其originalcolor属性中定义的颜色。下面的代码可以工作,但似乎应该有一种更干净的方法来获得第3行中的第二次clicker选择,而不是重复$'clicker' 您可以向.css传递函数,而不是值: $('#clicker').css('background-color', fun
$('#clicker').css('background-color', function(){
return $(this).attr('originalcolor');
});
或者,更简单地说,缓存$‘clicker’:
我在这里看到的唯一可能更干净的方法是缓存jQuery选择结果:
$('#popup').dblclick(function(){
$(this).hide();
var $clicker = $('#clicker');
$clicker.css('background-color', $clicker.attr('originalcolor'));
});
你能创建一个JSFIDLE吗?除了事先将其存储在变量中之外,没有其他方法。啊,那么还有另外一种方式。但是将其存储在变量中会更干净。originalcolor属性是动态的吗?如果没有,您可以使用.css'background-color'、'color'。这些建议都以某种方式重复了最初的选择。我在想,在这个链条中,可能会有一些聪明的方法来参考最初的选择,但我想不会。谢谢。@Steve:它没有任何链子。您正在调用一个函数并向其传递一个参数。当您调用函数时,它不知道函数在什么上下文中。
var $c = $('#clicker');
$c.css('background-color', $c.attr('originalcolor'));
$('#popup').dblclick(function(){
$(this).hide();
var $clicker = $('#clicker');
$clicker.css('background-color', $clicker.attr('originalcolor'));
});