jQuery .live多次触发! - php

问候大师,这有点难以解释,但我会试一试。

我对JQuery中的.live()函数有一个快速的问题。我将在这里简化示例。我有一个页面“ index.php”,其中包含一个容器“ #display_files_container”,其中填充了由不同页面“ process.php”动态生成的锚链接。当基于链接的属性选择链接时,会将链接加载到相同的<div>中。参见示例:

索引文件

<html>

<head><title>index.php</title>

<!-- this function below loads process.php and passes it the dirid variable via post.  I then use this post variable inside of process.php to pull other links from the database -->

<script language="text/javascript">
     $('.directory').live("click", function() {
          $('#display_files_container').load('plugins/project_files/process.php', {dirid: $(this).attr('dirid')});
     });
</script>

</head>

<?php 
/*This code initial populates the link array so we have the first links populated before the users clicks for the first time*/
some code to fetch the $current_directory_list array from the database initially....
>?

<body>
<div id='display_files_container'>

<?php

/*Cycle through the array and echo out all the links which have been pulled from DB*/
for($i=0;$i<$current_directory_count;$i++) {
  echo "<a href='#' class='directory' dirid='".$current_directory_list[$i]['id']." '>".$current_directory_list[$i]['directory_name'].
  "</a> ";
}

?>

</div>
</body>
</html>

程序PHP

该文件包含基于从index.php中的.click()方法发送的发布变量“ $ _POST ['dirid']”从数据库填充$ current_directory_list []数组的代码。然后它回显结果,然后将其显示在#display_files_container容器中。当您单击那些链接时,该过程将重复。

这有效...您可以单击目录树,并且每次都加载新链接。但是,似乎想要一键单击许多load.process.php文件。单击更多的链接似乎增加了process.php的加载次数。因此,例如,您可以单击一个链接,并在firebug中报告process.php已加载23次。如果您有任何想法请告诉我。有什么方法可以确保.live()仅将process.php文件加载一次?

谢谢,
-cs

参考方案

发生的是,每次单击链接时,都会将新的click事件处理程序绑定到每个链接。这是可能的,因为特定事件可以有多个处理程序。您必须在处理程序中返回false才能停止事件冒泡。

更新:我不确定为什么多次绑定处理程序,但是我猜想它与“实时事件”实现的特殊性质有关。请参阅docs中的事件委托一章:

传递给.live()的处理程序永远不会绑定到元素。相反,.live()将特殊处理程序绑定到DOM树的根。

另一种解决方案是使用bind()或click()代替live(),并在加载ajax之后显式调用它:

function bind_link_handler() {
    $('.directory').click(function() {
        $('#display_files_container').load('...', bind_link_handler);
    })
}

jQuery PHP在函数中传递值与实时单击? - php

我正在尝试通过onclick传递一些值,这对我来说要快得多。但是我需要使用某种“实时”单击,并且正在查看.on()或.delegate()。但是,如果执行这些操作中的任何一个,则在followme()中传递这些值似乎很难。有没有我看不到的某种方法? <div class='btn btn-mini follow-btn' data-…

jquery.post()和php - php

我正在使用$()。post和php来更改的内容。脚本成功执行-萤火虫清楚地表明textarea标记之间的文本已更改,并且我的小警报触发。但是,用户看不到更改。在Firefox中根本不会发生更改,而在IE中,textarea最多可延迟10秒更新。这是我正在使用的jQuery:$(document).ready(function() { $('#pv_…

AJAX实时电子邮件验证(PHP) - php

当用户在我的网站上创建帐户时,我希望对照我的数据库(MySQL)中的所有当前用户名检查输入的用户名,并确认是否可用。有谁知道我可以使用的任何好的库,或者是jQuery的插件? 参考方案 所需的确切信息以示例形式here给出。它使用jQuery作为JavaScript库

使用jQuery将值增加到attr - php

我想增加i的值。 “ for”循环不起作用。$("a[href$='.xls']").appendTo(".xl1").attr('id','xl'+i); 我搜索所有excel文件,并将它们放在容器中并增加其id的值。谢谢吉恩 参考方案 $("a[…

获取PHP中的cookie值? - php

我在jQuery中创建cookie。我可以在Firefox中进行验证。但是,当我尝试打印cookie或将其分配给另一个值时,我无法获取它。我也使用会话。然后,我用PHP开始了会议。我的打印或分配cookie值的代码如下所示echo $_COOKIE['a']; 用于分配值$b=$_COOKIE['a']; 使用jQue…