按钮单击时Jquery返回父函数

时间:2015-03-17 09:53:01

标签: javascript c# jquery asp.net

我有一个像确认一样的弹出式div,如下所示

<div class='pop'>
    check me
    <span class="spok">Ok </span>
    <span class="spcancel">cancel </span>
</div>

现在这个popUp会在某些情况下打开,点击按钮我想将一些值返回到父函数

按钮事件

$(".spok").click(function(){
    return 'OK';
});
$(".spcancel").click(function(){
    return 'CANCEL';
});

showPop方法

function showpop (){
   $('.pop').show();

}

现在这样打电话

var retval = showpop()
alert(retval);

但似乎我没有接近我的要求。

小提琴上的代码

Fiddle

更新

能够回电功能但.... 当我试图隐藏弹出窗口时,它会多次报警。在下拉列表中选择是或否,然后在单击确定或取消后,两次或三次,您将看到效果

更新了小提琴

[Fiddle2][2]

1 个答案:

答案 0 :(得分:4)

对话框的操作&amp;按钮是异步的。使用回调(例如传递给对话框)或事件来广播结果。一种方法是为弹出窗口提供一个回调函数,该回调函数将被调用:

function showpop (onclose){
   $('.pop').show();
    $(".spok").click(function(){
        onclose('OK');
    });
    $(".spcancel").click(function(){
        onclose('CANCEL');
    });   
}

$(document).ready(function(){
    var retval = showpop(function(retval){
        alert(retval);
    });
}); 

JSFiddle: http://jsfiddle.net/TrueBlueAussie/gp5emrm4/4/

注意:单击的事件处理程序应该更具体对话框(可能使用附加到弹出窗口的委托事件):

function showpop (onclose){
   $('.pop').show().on('click', 'span', function(){
        onclose($(this).attr('class'));   // or some other property of the button
    });
}

更实际的例子(使用data-属性):

JEFiddle: http://jsfiddle.net/TrueBlueAussie/gp5emrm4/5/