我将此内容从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);
});
});
但它不起作用:/
答案 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,因为它们是唯一的。