Почему обработчик события .click здесь не обновляется?

#javascript #jquery #html #dom #onclick

#javascript #jquery #HTML #dom #onclick

Вопрос:

Я передаю строку таблицы функции, которая должна обновлять атрибут onclick для привязки.

Что бы я ни пробовал, я не могу присвоить ему новое значение. Я вижу, что это jQuery выбирает якорь. Но когда я оповещаю перед after, атрибут onclick по-прежнему указывает на то же значение, а не на параметр ‘url’, который предоставляется функции:

 function modifyTrEditUrl(tr, url) {

           console.log(tr.find('td:eq(6) a')[0]);

           tr.find('td:eq(6) a')
                .attr('onclick', url); // I have tried 
                                       //.click(function(e){..}) way too!

           console.log(tr.find('td:eq(6) a')[0]); //still the same value! :(
        }
  

Какие-либо советы?

Ответ №1:

Я не уверен, но похоже, что вы, возможно, путаете атрибут onClick с атрибутом HREF . При нажатии на ссылку используется URL-адрес в атрибуте HREF.

Атрибут onClick действительно используется для запуска Javascript-файлов. Тем не менее, если вы используете jQuery, вам действительно следует придерживаться функций bind or live (для которых click является оболочкой).

Ответ №2:

Я не специалист в jQuery (или даже javascript), но я думаю, что из вашего кода вы пытаетесь установить значение атрибута onclick в URL.

 .attr('onclick', url);
  

Я знаю, что в теге атрибуту onclick должна быть присвоена функция javascript. Я думаю, что код пытается создать тег, подобный

 <a onclick=url>
  

и я должен использовать URL-адрес в виде объекта string. Возможно, именно поэтому возникают ошибки.

Ответ №3:

Как насчет использования

  tr.find('td:eq(6) a').attr('href', url);
  

Ответ №4:

используйте .bind или .live , .live для поздней привязки