Greasemonkey& jQuery如何操作刚刚创建的元素?

时间:2011-07-03 06:05:19

标签: jquery greasemonkey

所以我正在尝试制作一些用户脚本来将数据发送到服务器并对答案作出反应(通过操纵我添加到网站的链接)

jQuery('table.borderlist').after('<a href="#" id="action"><Click here to do derp</a><br />');

这样可以添加到网站的链接现在我使用live()将我的新元素绑定到单击处理程序(因为这似乎是使用我的新链接的唯一方法(id = action)) 它看起来像这样:

    jQuery('#action').live('click', function() { 
    jQuery.ajax({
      type: 'GET',
      dataType: 'jsonp',
      data: 'id=666',
      jsonp: 'jsonp_callback',
      url: 'url',
      success: function (j) {
    // in here I want to change the element with id=action but nothing I tried so far seems to work
}});});

基本思想是做这样的事情:

jQuery('#action').replaceWith('Action successful');

问题是,这似乎不适用于我刚刚在任何其他元素上使用Greasemonkey脚本创建的元素。它可以正常工作。

欣赏正确方向的任何提示

3 个答案:

答案 0 :(得分:1)

你可以试试这个:

jQuery('table.borderlist').after(
    $('<a href="#" id="action"><Click here to do derp</a><br />').click(function(){

    })
);

但是.live的例子应该也可以。你确定你的身份#action是独一无二的吗?

答案 1 :(得分:0)

创建元素时,将其分配给变量,如下所示:

testvar = jQuery('table.borderlist').after('<a href="#" id="action"><Click here to do derp</a><br />');

然后,您可以稍后通过其变量引用该元素:

jQuery(testvar).doStuff(foo,bar);

答案 2 :(得分:0)

好的,我现在已经解决了问题,该网站使用了多个带有类borderlist的表,其中2个不可见-.-',所以我看不到脚本实际工作了......现在我只选择了正确的元素和它的工作就像一个魅力。

感谢您的帮助。