两个事件处理程序互相点击,没有无限循环?

时间:2014-10-14 09:30:06

标签: javascript if-statement logical-operators

新用户在这里,尝试学习我认为非常基本的东西。但是我遇到了这种情况,我想在已经准备好的数组中填充谷歌地图标记列表。

所以我想做的是放大地图中的标记,并突出显示列表中的相应元素。让地图标记和列表元素都可以点击,并做同样的事情。互相点击。没有它们永远循环。

在这种情况下,我为执行实际工作的每个处理程序运行了独立的函数。这是正确的做法。但它让我想到我对逻辑运算符的理解程度有多差。

我没有在这里输入所有代码,而是将其简化为这些基础知识,并创建了一个CodePen来说明:http://codepen.io/anon/pen/amiuy

以下是代码:

HTML:

<div id="button1">Button 1</div>
<div id="button2">Button 2</div>

<ul id="list">
    <li>Item 1</li>
</ul>

使用Javascript:

$(document).on('click', '#button1', function(e) {
    console.log('clicked button 1');
    $(this).css('color', 'red');

    $('#button2').trigger('click');
    populateList('button1');

});

$(document).on('click', '#button2', function(e) {
    console.log('clicked button 2');
    $(this).css('color', 'button');

    $('#button1').trigger('click');
    populateList('button2');

});

function populateList (button) {
    var list = $_('#list');
    list.append('<li>New item from: ' + button + '</li>')
}

我知道我可以通过为每个点击处理程序创建变量来解决这个问题,相应地将其设置为true或false。但是这个逻辑让我遇到了麻烦。什么时候应该设置为true,什么时候应该设置为false?

编辑:我也明白我应该在点击处理程序中运行函数,让两个点击处理程序运行相同的函数,而不是相互触发。但这只是对逻辑运算符的基本理解。我只需要学习这个,不管这个例子是多么愚蠢。因为我将来可能会遇到与此类似的情况。这些东西总是让我失望。

0 个答案:

没有答案