Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
再次引用jQuery链中的原始选择_Jquery - Fatal编程技术网

再次引用jQuery链中的原始选择

再次引用jQuery链中的原始选择,jquery,Jquery,我有一个clicker div和一个popup div。clicker div有一个“originalcolor”属性,它描述了clicker最初的颜色。当双击弹出窗口时,我想隐藏弹出窗口,并将点击器的颜色更改回其originalcolor属性中定义的颜色。下面的代码可以工作,但似乎应该有一种更干净的方法来获得第3行中的第二次clicker选择,而不是重复$'clicker' 您可以向.css传递函数,而不是值: $('#clicker').css('background-color', fun

我有一个clicker div和一个popup div。clicker div有一个“originalcolor”属性,它描述了clicker最初的颜色。当双击弹出窗口时,我想隐藏弹出窗口,并将点击器的颜色更改回其originalcolor属性中定义的颜色。下面的代码可以工作,但似乎应该有一种更干净的方法来获得第3行中的第二次clicker选择,而不是重复$'clicker'

您可以向.css传递函数,而不是值:

$('#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'));
});