Greasemonkey & jQuery Как манипулировать элементом, который я только что создал? - PullRequest
0 голосов
/ 03 июля 2011

Поэтому я пытаюсь сделать небольшой пользовательский скрипт для отправки данных на сервер и реагирования на ответ (манипулируя ссылкой, которую я добавил на сайт)

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 Script, на любом другом элементе, который он работает нормально.

Оцените любые подсказки в правильном направлении

Ответы [ 3 ]

1 голос
/ 03 июля 2011

вы можете попробовать это:

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

    })
);

, но ваш пример с .live также должен работать.Вы уверены, что ваш идентификатор #action является уникальным?

0 голосов
/ 03 июля 2011

Хорошо, теперь я исправил проблему, проблема была в том, что сайт использует более одной таблицы с классом borderlist 2 из них не виден -.- ', так что я не мог видеть, что скрипт действительно работал ... Теперь я выбрал только Правильный Элемент и его работа как очарование.

Спасибо за вашу помощь в любом случае.

0 голосов
/ 03 июля 2011

Когда вы создаете элемент, присваиваете его переменной, например:

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

Затем вы можете ссылаться на этот элемент по его переменной позже:

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