0

假设我有两个按钮“添加链接”和“添加文本”。“添加链接”按钮会自动将以下内容附加到现有页面:

<a href="text.html"></a>

当我单击“添加文本”按钮时,创建的所有动态链接的文本都应包含文本“文本”。

我最初使用 "$("a").text("Text")" 作为“添加文本”按钮的功能,但它不起作用,因为链接是在用户单击“添加链接”按钮时动态创建的.

如何使我可以将“文本”放入所有动态创建的链接?

注意:像这样的东西

$('buttonforaddtext').live('click', function() {
    $("a").text("Text");
});

对我不起作用,因为该按钮一直都在那里,它是通过单击“添加链接”按钮动态创建的“a”。

4

6 回答 6

1
$('button').on('click', function() {
   /* your code */
});

如果你有动态对象,你需要使用.on()它来让它工作......

于 2012-05-04T18:48:25.627 回答
1

正如我在评论中提到的那样尝试如下,

$('#addLink').on('click', function () {
    $(body).append('<a href="' + someURL + '" class="newLink"></a>');
});

$('#addText').on('click', function () {
    $('a.newLink').text('New Link'); 
});
于 2012-05-04T18:51:25.423 回答
0
var yourLink = $("<a href="+someURL+">"+yourText+"</a>");

或者

var yourLink = $("<a href="+someURL+"/>");
yourLink.html("Text");

然后

yourLink.appendTo($('body'));

那就是如果你想同时创建@

于 2012-05-04T18:48:20.897 回答
0

你描述的对我来说听起来不错。也许您应该发布您正在使用的代码。以下应该工作:

$('#addLink').click(function(){
    $('body').append('<a href="text.html"></a>');
});

$('#addText').click(function(){
    $('a').text('Text');
});

只要在单击事件发生后创建您的 jQuery 对象 ($('a')),一切都应该按照您的描述工作。

于 2012-05-04T18:49:30.827 回答
0

正如我们同事之前所说,您需要使用“.live”方法。碰巧在您尝试绑定事件的那一刻,该元素不存在并且它不起作用。

使用 .live,窗口将继续侦听您选择的元素。

如果您使用的是 jQuery 1.7.+,我建议您使用 .on() 方法绑定事件,并在您不再需要它时使用 .off() 解除绑定...

PS.:顺便问一下,你想选择什么?

$('buttonforaddtext')
于 2012-05-04T18:56:45.550 回答
0

您的问题可能是 live 已被弃用,或者您没有您认为拥有的 HTML。由于您在回调中重新查询 A 标记以进行文本插入,并且按钮是静态 HTML,因此您不需要“live”或“delegate”或“on”。只需做一个简单的 .click

于 2012-05-04T19:02:56.190 回答