2011-04-20 115 views
0

正如我已经做了多年,我可以使用PHP(它已从数据库中获得信息)创建动态HTML。动态元素与jQuery

因此,举例来说,假设我要动态地创建链接x个,我的PHP脚本将结束呼应:

<a id=link1 href=>Link 1</a> 
<a id=link2 href=>Link 2</a> 
//etc.... 

这是罚款。但是,如何处理jQuery代码中这些按钮的动态特性?比方说,我想每个链接,弹出一个警告的“Hello World”:

$('#link1').click(function() { 
       alert("Hello World"); 
       return false; 
       }); 

我会重复使用PHP动态每个创建的链接代码?我当然知道,这是不是做正确的事情,但是我卡上有什么用

我感谢所有帮助

干杯

+0

很多优秀的答案!我很想选择一个! :) – jtnire 2011-04-20 10:25:10

回答

1

任何HTML这是一个从服务器端来了(如PHP或ASP.NET)可以治疗一样你会正常的静态HTML。就您的浏览器而言,这不是动态创建的。

如果我们在客户端上讨论动态创建的元素(如使用Javascript/jQuery创建链接),那完全是另一回事。例如,您必须调整您的Javascript来解决这个问题,比如使用.delegate().live(),而不是仅仅使用香草.bind()调用。


至于你就在一次针对多个元素的问题,语义的方式来做到这一点是类。所以,像

<a href="#" id="link1" class="foo">Linky linky</a> 
<a href="#" id="link2" class="foo">Linky linky</a> 
<a href="#" id="link3" class="foo">Linky linky</a> 

可以立刻通过一些有针对性的像

$('a.foo').click(function() { 
    alert(); 
}); 

此外,如果你想从下面进入实际的URL阻止链接点击,jQuery的可以很容易为你使用这个代替return false;

$('a.foo').click(function(e) { 
    alert(); 
    e.preventDefault(); 
}); 

你也可以拨打e.stopPropagation()停止事件冒泡到父元素,如果你愿意。有时候,我认为return false功能过多太多了。

+0

我选择这个作为答案,因为作者进一步了几步:)所有其他答案都很好,但谢谢! – jtnire 2011-04-20 10:28:40

3

没有,你可以分配的最佳方法一类到你的链接,并用它来连接点击功能

<a class='links' id=link1 href= '#' >Link 1</a> 
<a class='links' id=link2 href='#' >Link 2</a> 

$('a.links').click(function() { 
       alert("Hello World"); 
       return false; 
       }); 
0

您可以添加一个类的每一个环节,并使用类绑定你的事件代码。

$(".DynamicLinks").click(function() { 
        alert("Hello World"); 
        return false; 
        }); 
2

如果所有所需的ID共享相同的前缀(这里是link),这是没有问题的。有一个选择的“开头”:这里

// This will select all a-elements where the id starts with "link" 
$('a[id^="link"]').click(function(event){ 
    alert("Hello World"); 
    return false; 
}); 

查找进一步的例子:http://api.jquery.com/attribute-starts-with-selector/

+0

添加聊天关于'类',我会upvote你。有几种方法可以解决OP的问题。 – 2011-04-20 10:14:31