【发布时间】:2015-04-17 17:58:15
【问题描述】:
我真的很困惑为什么第二种方法没有进入 ajax:
1. (这是触发 ajax 好)
<div id="div_comment">
<textarea name="text_comment" id="text_comment" placeholder="160 chars or less, no # or @" data-role="none" rows=11 cols=20 onkeypress="if(event.keyCode==13){return false;}" onKeyDown="limitText2(this,160);" onKeyUp="limitText2(this,160);" style="resize:none;"></textarea>
<button id="comment_btn" class="ui-btn ui-btn-inline" style="border: #ffffff 1px solid;">Enter your comment</button>
</div> <!-- div_comment -->
2。 (这不会触发 ajax)
document.getElementById('div_comment').innerHTML = "<br> <br> <textarea name=\"text_comment\" id=\"text_comment\" placeholder=\"160 chars or less, no # or @\" data-role=\"none\" rows=11 cols=20 onkeypress=\"if(event.keyCode==13){return false;}\" onKeyDown=\"limitText2(this,160);\" onKeyUp=\"limitText2(this,160);\" style=\"resize:none;\"></textarea> <span id=\"commenterr\" style=\"font-weight:bold; font-size:90%;\"></span> <br style=\"line-height:190%;\"> <button id=\"comment_btn\" class=\"ui-btn ui-btn-inline\" style=\"border: #ffffff 1px solid;\">Enter your comment</button> </center> <a href=\"#searchpage\" data-transition=\"slide\"> Back </a>";
两者都使用相同的 ajax:
$(document).ready(function(){
$("#comment_btn").click(function(){ //click write_comment a tag btn
console.log ("ready-comment_btn: clicked comment_btn");
$.post("cgi-bin/s_comment.pl", {
comment:"HELLO WORLD IN READY",
},
function(data,status){
document.getElementById('div_comment').innerHTML = data;
});
}); //write_comment
}); //ready
第二种方法将相同的内容分配给innerHTML,但不起作用,当单击按钮时,没有响应,只是橙色边框发光。
这是因为 Chrome 吗?
【问题讨论】:
-
所以您知道这里发生了什么,当此代码运行时:
$("#comment_btn"),如果该元素不存在,则不会选择任何内容,这意味着单击事件处理程序未附加到任何元素.我已经有几年没有使用过 jQuery Mobile,但是该框架的 AJAXy 特性意味着您不想使用document.ready,而是使用 jQuery Mobile 特定事件之一,而不是在 AJAXy 环境中模仿document.ready。
标签: javascript jquery ajax jquery-mobile