执行函数时添加的动态选择器

时间:2013-10-23 18:55:07

标签: javascript php jquery

我正在回复一些带有一些类ID的php行,并且需要能够将它们与jquery .click一起用作选择器。有没有办法做到这一点??该属性未加载everthing else,稍后将通过php添加。

play.js -

$(".link").click( function(){
   /* var l = ""
     $.post('input_commands/move_to.php',{l:l}, function(data) {
      text=data;
      elem = $("#placeholder");
      //delay=100;
      addTextByDelay(text,elem,delay);
   }); */
   alert("omg whyyyyy");
});

get_locations.php -

if($array_loc['loc_north']>0){echo "<a class='link' id='location_north'>Go north to ".$array_loc_north['loc_name']."</a> <br>";}

3 个答案:

答案 0 :(得分:0)

为了将事件绑定到动态元素(在第一次DOM加载后添加的元素),

取代:

$(".link").click( function(){

使用:

$(document).on('click', '.link', function(){
希望有所帮助。

答案 1 :(得分:0)

您需要使用委托事件,因为您的元素会动态添加到DOM中(或者在创建事件处理程序之后)。

$(document).on('click', '.link', function(){
    console.log("clicked");
});

在上文中,事件被委托给文档,因此将针对.link选择器检查所有点击,即使目标是委派事件时不存在的元素。

答案 2 :(得分:0)

如果使用ajax动态添加它,您可能希望调用该选择器并在回调上附加.click()。

$.ajax({
        url: '...',
        success: function(response) {
            // do stuff with response (assume that .link will be appended)
            $(".link").click( function(){
                //stuff when click link
            }
        }
    });

否则,您可以输出带有onclick属性的链接并定义自定义函数:

if($array_loc['loc_north']>0){echo "<a class='link' id='location_north' onclick='customFunction(this)'>Go north to ".$array_loc_north['loc_name']."</a> <br>";}

并在JS中:

function customFunction(element) {
 //do stuff here after the link was clicked
 //element variable passed as parameter contains the link element clicked
}

PS:如果有多个元素,则无法为“id”属性指定常量值,因为它应该是唯一