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

Passing a div value to a jQuery function inside 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
                    });
    });

所以当有人点击个人资料图片时,个人资料会从 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);
    });
});

但它不起作用:/

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

您需要使用事件委托:

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

document 只是一个工作示例 - 您应该使用父元素来加快速度。

如果它不工作,通过将 console.logs 放在你的 fancybox 之前、你的 fancybox 之后和你的点击事件中来调试它。如果它在点击事件内部触发,则代码有效,问题出在您的标记上。确保没有双重 ID,因为它们是唯一的。