触发在不同代码块中分配的jQuery事件处理程序

时间:2011-06-02 14:24:08

标签: javascript jquery jquery-ui javascript-events jquery-ui-dialog

我有一个案例,在一个jQuery代码块(文件)中定义/分配了一个单击处理程序,我想从另一个jQuery代码块中定义/分配的另一个单击事件触发它。我怎么能做到这一点?

以下代码是我想要完成的大大简化的版本。当我点击#Element2时,我想看到的是一个JavaScript警报“Element One”。

示例HTML:

<p id="Element1">Element One</p>
<p id="Element2">Element Two</p>

第一个jQuery代码块:

$(document).ready(function() {
    $('#Element1').click(function() {
        alert('Element One');
    });
});

第二个jQuery代码块:

$(document).ready(function() {
    $('#Element2').click(function() {
        $('#Element1').click();
    });
});

更新:我的原始示例确实有效。我正在建立我的字段提示jQuery UI Dialog solution,并没有说明我正在使用的'clickoutside' handler。在我的'clickoutside'处理程序中为第二个元素添加一个检查允许显示对话框。

2 个答案:

答案 0 :(得分:2)

单击第一个元素时需要触发单击。您可以使用trigger方法。

function element1Hanlder () {
    alert('Element One');
}

$(document).ready(function() {
    $('#Element1').click(function() {
        alert('Element One');
    });
});

$(document).ready(function() {
    $('#Element2').click(function() {
        $('#Element1').trigger('click');
    });
});

答案 1 :(得分:1)

编辑:这是基于JohnP的“触发器”建议(所以你应该选择他作为正确答案)......

如果我从外部js文件加载此块...

$(document).ready(function() {

    $('#Element1').click(function () {
        alert( $(this).text() );
    });

});

然后将其加载到HTML本身的脚本标记中......

$(document).ready(function() {

    $('#Element2').click(function () {
        $('#Element1').trigger('click');
    });

});

似乎按预期工作。