使用Jquery将用户操作记录到数组

使用Jquery将用户操作记录到数组,jquery,arrays,Jquery,Arrays,我试图在jquery中创建一个简单的用户点击动作记录器,但遇到了一些问题。我希望用户单击一个记录按钮,然后单击一次记录他单击的内容。然后按停止按钮停止录制。 到目前为止,我得到的是: var stack = new Array(); var recordmode = false; $('#record').click(function(){ recordmode = true; alert('You are now in record mode'); }); $('#stop').click

我试图在jquery中创建一个简单的用户点击动作记录器,但遇到了一些问题。我希望用户单击一个记录按钮,然后单击一次记录他单击的内容。然后按停止按钮停止录制。 到目前为止,我得到的是:

var stack = new Array();
var recordmode = false;

$('#record').click(function(){
recordmode = true;
alert('You are now in record mode');
});

$('#stop').click(function(){
recordmode = false;
console.log(stack);//output what's in the array
stack = []; //erase the array
});


$('#note_markers').click(function(){
if(recordmode){
$('.one_0').click( function(){ stack.push('one_0'); })
$('.one_1').click( function(){ stack.push('one_1') ; })
}
});
然后单击“开始”和“停止”按钮

<a id='record'>R</a>
<a id='stop'>stop</a>
                           <div id="one_notes">
                                <a class="one_0"></a>
                                <a class="one_1"></a>
                                <a class="one_2"></a>
                                <a class="one_3"></a>
</div>
R
停止
在停止和删除数组之前,我想用数组中记录的内容以/one_0/one_1/one_0等形式构建一个URL。(不过还没说到那部分)

发生的情况是,第一次单击没有被记录,然后它开始输入两个相同的元素。我不明白为什么我会有这种行为

有什么想法吗


作为旁注,是否有方法获取任何单击元素的名称?

您可能希望尝试为要跟踪的每个操作分离单击处理程序

$('.one_0').click( function(){ 
    if(recordmode){
      stack.push('one_0'); 
    }
});

$('.one_1').click( function(){ 
    if(recordmode){
      stack.push('one_1'); 
    }
});
看起来有很多重复的代码。。。让我们试着清理一下。为什么不更进一步,给你所有的“可记录”动作一个具有唯一
rel
属性的类呢

使用更流行的1.7+jQuery语法



您可以使用上面提到的方法捕获对任何元素的单击。。。但是,我建议您准确地标记要捕获的操作,无需捕获所有操作…

您的问题是,您从
\note\u markers
中获得一次单击,并从
中获得一次单击

试试这个:

$('#note_markers a').click(function(){
    if(recordmode)
        stack.push($(this).attr('class'));
});

您可以更改事件侦听器以侦听您实际需要的任何内容,但这将根据提供的html实现您想要的功能

请包含更多的html。什么是
#注意_标记
.one\u 0
?只要元素有名称,
$('*')。on('click',function(){alert($(this).attr(“name”);})
将为您提供任何元素的名称。
$('*')
几乎总是一个非常糟糕的主意。使用
$(文档)。在('click',…)
上!把他们分开就行了…谢谢!我把它们作为不同的类来处理其他事情,但我会看看是否可以使用rel属性和相同的类。按照idrumgood的建议,是否会有一些开销?这两种方法都很有效,但idrumgood的代码行对我来说肯定少了很多。您能解释一下这样做的缺点吗?his将捕获
标记,这些标记是
#note_markers
元素的后代。如果你想做到这一点,那么这是最好的方式。就个人而言,我喜欢将元素组合在一起,并且尽可能具体。更好的选择器应该是
A.recordable
(如果我们仍然只讨论
标记。我明白你的意思……我只需要重新考虑一下。再次感谢你的帮助!
var targetURL = _base_url + stack.join('/');
$('#note_markers a').click(function(){
    if(recordmode)
        stack.push($(this).attr('class'));
});