jQuery Добавленные элементы с href и javascript не работают - PullRequest
0 голосов
/ 12 февраля 2011

Итак, я добавляю некоторые элементы в jQuery, которые содержат href, который вызывает другой скрипт при щелчке якоря, но не работает;Вот пример:

$(".un_comentario").hover(

    function () {

        $("#dedos_voto", this).append($("<span id=\"commentup\" class=\"vote_up\"><a href=\"javascript:;\" ><img src=\"/mimg/comment/csthumbup.png\" /></a><?php echo $utilchido;?></span>"));

    }

);

Итак, как вы можете видеть, якорь имеет ссылку, которая вызывает другой скрипт, вот другой скрипт:

$(function(){

    $("span.vote_up").click(function(){
    //get the id
    the_id = $("div.un_comentario").attr('id');

        $.ajax({
            type: "POST",
            data: "action=vote_up&id="+$("div.un_comentario").attr("id"),
            url: "votacomment.php",
            success: function(){alert("Gracias, el voto se ha agregado.");
                 }

        });


        });
}); 

Так что скрипт работает только если элементынаходятся в разметке html, но не в том случае, если к элементам добавляется jQuery.

Есть предложения?

Ответы [ 4 ]

2 голосов
/ 12 февраля 2011

вы динамически добавляете ссылки href к использованию DOM .live()

$("span.vote_up").live('click',function(){

//rest of your logic

});
1 голос
/ 04 сентября 2013

.live() давно устарел (удален в 1.9), можем ли мы перестать рекомендовать его? Правильный подход заключается в использовании .on(), например:

$("#span.vote_up").on("click", function(event){
    //do this
});

jQuery документация для .on ()

Кроме того, ни return false;, ни предложение href=\"javascript:;\" не обязательно являются хорошими ответами ... Если у вас нет подходящего href для замены (тогда используйте event.preventDefault(), чтобы предотвратить поведение по умолчанию), просто используйте более подходящий элемент ...

1 голос
/ 12 февраля 2011

Два вышеуказанных ответа верны, но я также рекомендую не использовать href=\"javascript:;\" в привязке, вместо этого добавьте return false; в конце функции jQuery.

Я использую этот сайт для лучших практик с JavaScript http://www.javascripttoolbox.com/bestpractices/#onclick (я направляю вас к части об якорях, но всю страницу стоит прочитать)

0 голосов
/ 12 февраля 2011

Вы можете использовать $("span.vote_up").live() вместо $("span.vote_up").click.Это свяжет код со всеми элементами span.vote_up, которые могут быть добавлены в DOM позже.

Я нашел эту ссылку полезной

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...