0

我试图将事件限制为“管理”div。当我尝试打开其他 div 并关闭它们时,它会触发页面上的所有事件。我不想为每个 div 使用特定的 ID,并且希望它只是控制一个内容。

这是小提琴http://jsfiddle.net/dalo ​​nd/9Lo0rukh/

这是JS

$(document).ready(function() {
    $('.grey_button.close').live('click', function() {
        $('.grey_button.open').click();
        $('.job_description').hide();
        $(this).siblings('.job_description').show();
        $(this).toggleClass('close open');
        return false;
    });
    $('.grey_button.open').live('click', function() {
        $('.job_description').hide();
        $(this).toggleClass('close open');
        return false;
    });
});
4

1 回答 1

1

jQuery < 1.7

您可以指定事件处理程序以应用于选择器中 div.grey_button内的元素:.manage

$('.manage .grey_button').live('click', function() {
    $(this).prev('.job_description').toggle();
    $(this).toggleClass('close open');
    return false;
});

小提琴

注意:处理程序组合在一起,使用.toggle()on.job_description如下所述。

jQuery > 1.7

您可以将点击事件委托给div中的.grey_button元素。无论如何,这.manage是“现代”方法,已弃用live

您还可以将两个事件处理程序替换为一个,并用于.toggle()定义描述的打开/关闭。

$('.manage').on('click', '.grey_button', function() {
    $(this).prev('.job_description').toggle();
    $(this).toggleClass('close open');
    return false;
});

小提琴

于 2014-08-07T04:23:00.067 回答