将div值传递给Fancybox 2中的jQuery函数

时间:2015-01-08 15:23:13

标签: jquery html fancybox-2

我将此内容从test.php加载到Fancybox:

<form class="msgarea" action="" method="post">
            <textarea id="usermsg" cols="35" rows="4"></textarea>
            <input type="submit" id="submitmsg" value="Send" />
</form> 

$("#submitmsg").click(function(){
    var clientmsg = $("#usermsg").val();
    alert(clientmsg);
});

clientmsg val不提醒任何内容,而任何其他jQuery函数都能正常工作。当我直接拨打test.php而不是在fancybox内部时,它可以正常工作。可能是什么问题?

这就是我如何调用Fancybox:

修改

我调用test.php的index.php如下所示:

<img src="profileimage.jpg" class="fancybox fancybox.ajax" href="test.php?user=123">

$(document).ready(function() {
        $(".fancybox").fancybox({
                        'type':'ajax',
                        "autoScale": false
                    });
    });

所以当有人点击profileimage时,配置文件会从test.php显示到fancybox中,我希望用户能够从msgarea发送消息

编辑2:

现在在index.php里面我把它改成了:

$(document).ready(function() {
    $(".fancybox").fancybox({
        'type':'ajax',
        "autoScale": false
    });
    $('.msgarea').on('click', '#submitmsg', function(e){
        e.preventDefault();
        var clientmsg = $("#usermsg").val();
        alert(clientmsg);
    });
});

但它不起作用:/

1 个答案:

答案 0 :(得分:2)

它没有提醒,因为id #submitmsg不存在,因为它是异步加载的。

您需要使用事件委派:

$(document).on('click', '#submitmsg', function(e){
  e.preventDefault();
  var clientmsg = $("#usermsg").val();
  alert(clientmsg);
});

文档只是一个工作示例 - 您应该使用父元素来提高速度。

如果它没有正常工作,请将console.logs放在你的fancybox之前,在你的fancybox之后和你的click事件中。如果它在click事件中触发,则代码可以正常运行,问题就在于你的标记。确保没有双重ID,因为它们是唯一的。