如何更改动态生成的节点?

时间:2014-04-01 13:46:15

标签: javascript jquery html javascript-events

我现在已经搜索了很长一段时间,试图找到一种方法来改变(删除链接,突出显示,w / e)刚刚动态添加的html内容。

首先,我使用getJSON下载一个跨域网站:

$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://my.other.site/') + '&callback=?', function (data) {
    $('#main').html(data.contents);
});

然后,我尝试使用jquery:

访问内容
$('a').unwrap;

现在我认为我理解动态生成的节点需要通过jQuery" .on"方法,但像"准备好"或者"改变"既不是在文件上也不是我的" #main"。

其他活动,例如" mouseMove"或"点击"实际工作:

$(document).on('click', 'a', function () {
    $(this).unwrap();
});
$(document).on('click', '#primaryMenu', function () {
    alert('yeee');
});

但我无法看到一种方式(或地方),例如:

$('h3').wrap('<i></i>');

如您所见,我使用WhateverDomain.com来允许跨域GET请求。

我也愿意接受其他建议,以便能够复制网站并随意修改。

以下是我一直在使用的小提琴:Fiddle link

2 个答案:

答案 0 :(得分:1)

您可以在将数据添加到DOM之前将数据加载到jquery对象中,然后在那里进行任何调整。

像这样:http://jsfiddle.net/uGgk4/1/

$(document).ready(function(){
    $(document).on('click', 'a', function () {
        $(this).unwrap();
    });
    $(document).on('click', '#primaryMenu', function () {
        alert('yeee');
    });
    var jqxhr = $.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://www.wiiu-info.fr/') + '&callback=?', function (data) {
        var loadedData = $(data.contents);                
        loadedData.find("a").unwrap();
        $('#main').empty();
        $('#main').append(loadedData);        
    });
});

首先我将数据内容包装在jquery中,然后在将元素附加到DOM之前访问它们。

答案 1 :(得分:0)

添加&#39; preventDefault()&#39;:

$(document).on('click', 'a', function (e) {
    e.preventDefault();
    $(this).unwrap();
});