Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery单击事件重新加载页面_Jquery_Events - Fatal编程技术网

jQuery单击事件重新加载页面

jQuery单击事件重新加载页面,jquery,events,Jquery,Events,我有一个jQuery代码,可以在dom上运行。它还动态创建元素。当我调用其中一个动态元素的click事件时,它不再调用click事件中的代码,而是重新加载页面,并再次调用pageload上的函数。基本上,它根本不运行click事件中的代码 $(document).ready(function(){ loadPage(); function loadPage() { var val

我有一个jQuery代码,可以在dom上运行。它还动态创建元素。当我调用其中一个动态元素的click事件时,它不再调用click事件中的代码,而是重新加载页面,并再次调用pageload上的函数。基本上,它根本不运行click事件中的代码

 $(document).ready(function(){

                loadPage();

                function loadPage() {   

                    var value = $("#search").val();

                    //create post data
                    var postData = { 
                        "value" : value
                    };

                    //define ajax config object
                    $.ajax({
                        type: "post",
                        url: "search.php",
                        data: postData, 
                        dataType: "json",
                        success: function(data) {

                            if(!data[0].success){
                                alert(data[0].er);

                            }
                            else {
                                $('#search-results').empty();
                                var div_main = $("<div>").attr('id', "search-content").appendTo("#search-results"); 

                                for (var x = 0; x < data.length; x++) {

                                     var div = $("<div>").attr('id', "search-content-container").appendTo(div_main); 

                                     var div_en_quotes = $("<div>").attr('id', "search-en-quotes").html(data[x].cQuotes).appendTo(div);
                                     var div_author = $("<div>").attr('id', "search-author").html(data[x].vAuthor).appendTo(div);
                                     var div_ref = $("<div>").attr('id', "search-bookref").html("<a class='bk_name' href='?bookname="+ data[x].vBookName +"'>" + data[x].vBookName +"</a> "+ data[x].vRef).appendTo(div);


                                }
                            }
                        }
                    }); 

                }
 });

$(document).on("click", "a.bk_name", function(e){ 

                    e.preventDefault();
                    alert($('.bk_name').html());

            });
$(文档).ready(函数(){
loadPage();
函数loadPage(){
var值=$(“#搜索”).val();
//创建post数据
var postData={
“价值”:价值
};
//定义ajax配置对象
$.ajax({
类型:“post”,
url:“search.php”,
数据:postData,
数据类型:“json”,
成功:功能(数据){
如果(!数据[0]。成功){
警报(数据[0].er);
}
否则{
$(“#搜索结果”).empty();
var div_main=$(“”)attr('id',“搜索内容”).appendTo('search results”);
对于(var x=0;x
如果我添加
e.preventDefault
,它会停止页面重新加载并执行代码,但是
锚定标记的值保持静态。也就是说,即使单击其他值,它也只显示循环中的第一个值


我使用的是jQuery 1.7。

如果要防止默认设置,单击处理程序函数应该返回false。jQuery在内部委托preventDefault方法(如果可用)。

是的,确实显示DOM中找到的第一个
a.bk\u名称的值。也许你是说

$(document).on("click", "a.bk_name", function(e){ 
    e.preventDefault();
    alert($(this).html()); // instead of alert($('.bk_name').html());
});
有几件事:

  • 我将把on-click事件调用放在documentready函数中。元素还没有出现
  • 我将使用一个委托来捕捉点击事件

    $('#search-results').delegate('a.bk_name', 'click', function(e){ 
        e.preventDefault();
        alert($(this).html());
    });
    
  • $(“#搜索结果”).empty();没有达到你的期望。最好使用.html()并传入要附加的对象


  • 应该是
    警报($('.bk_name').html())
    而不是
    警报(('.bk_name').html())?我个人总是使用:if(e.preventDefault){e.preventDefault();}返回false@natedavisolds,对不起,这是个打字错误。我已经改正了。是的,很好。非常感谢你。不过,我得等6分钟才能接受你的回答。@Zuth.谢谢你的回答。empty();清除div#搜索结果。谢谢你的指点。会记住的。啊!我明白了,这在1.7中发生了变化。很高兴知道。