Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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_Jquery Traversing - Fatal编程技术网

Jquery 我可以访问链中上次使用的遍历操作的名称吗?

Jquery 我可以访问链中上次使用的遍历操作的名称吗?,jquery,jquery-traversing,Jquery,Jquery Traversing,我想知道是否有可能找到创建当前元素数组的方法的名称 我试图在jquery对象本身中找到它,但我看不到可以存储它的地方 尝试填写此项 $.fn.myfunc=function(){ //your brilliant idea here return functname; } $('body').find('.a').myfunc(); //returns 'find' $('body').children('.a').myfunc(); //returns 'children' $('body'

我想知道是否有可能找到创建当前元素数组的方法的名称

我试图在jquery对象本身中找到它,但我看不到可以存储它的地方

尝试填写此项

$.fn.myfunc=function(){
//your brilliant idea here
return functname;
}

$('body').find('.a').myfunc(); //returns 'find'
$('body').children('.a').myfunc(); //returns 'children'
$('body').find('.a').next('div').myfunc(); //returns 'next'

//and if You're really awesome:
    $('body').find('.a').next('div').css('float','left').myfunc(); //returns 'next'

这个例子并不完美,但它提取了许多情况下的最后一个操作(查找、筛选、子项、下一步)。基于jQuery.pushStack的内部结构


赏金因为找到了路而去了BBonified

这是我对上次_操作功能的升级$()被故意识别为.find()


这里使用的是:

添加了新的JSFIDLE链接,该链接具有更坚实的解决方案,用于包含空格和类选择器的子查询。这是一个很好的概念证明。我会很满意地指出在哪里可以找到它,所以这真是太棒了!另外,我没有接受答案,因为我正在等待悬赏选项弹出。经过一些测试,我发现您的is_find无法正常工作。这是真的,只要在链中的某个地方有发现。
function last_operation( $$ ) {
    var selector = $$.selector,
        selector_cmpr;

    while ( ( selector_cmpr = remove_paren( selector ) ) != selector ) {
        selector = selector_cmpr;
    }

    var operations = selector.split('.'),
        is_find    = selector.replace(/, /, '').split(' ').length > 1,
        operation;

    if ( is_find ) {
        operation = 'find';
    } else if ( operations.length > 1 ) {
        operation = operations[ operations.length - 1 ].replace(/PAREN/, '')
    } else {
        operation = 'unknown';
    }
    return operation;

    function remove_paren( str ) {
        var str_cmpr = str.replace(/\([^()]+\)/, 'PAREN');
        return str_cmpr;
    }
}
$.fn.lastop=function(){
var s=this.selector.replace(/^.*\.([a-zA-Z]+)\([^()]*\)[^ ()]*$|.*/,'$1');
return s?s:'find';
}