jquery, возьмите атрибут ссылки href, который был последним нажатым: сделать «следовать внешней ссылке или не следовать» - PullRequest
1 голос
/ 15 октября 2010

Я делаю крошечный скрипт, который добавляет класс «внешних» ко всем внешним ссылкам, затем, когда кто-то щелкает по внешней ссылке, он показывает div.question-обертку, которая имеет div.follow и div.dontfollow в нем также отображается URL-адрес ссылки, которую вы щелкнули в файле div.question-wrapper. единственная проблема, с которой я сталкиваюсь, - это копирование атрибута href ссылки, нажатой на кнопку div.follow.

JQuery:

$(".external").click(function() {
    thisurl = $(this).attr('href')
    $("#question-wrapper").fadeIn('normal')
    $("#follow").attr('href', "($(this).attr('href'))")
        return false;   
    $("#dontfollow").click(function() {
        $("#question-wrapper").fadeOut('normal')
    })
    $("#question-wrapper span").html(
        $(this).attr('href'))
        return false;
    }) 

HTML:

<div id="question-wrapper">
    Would you like to continue on to 
    <span id="url">space where link is</span>?
    <div id="follow">CONTINUE</div>
    <div id="dontfollow">STAY HERE</div>
</div>

1 Ответ

2 голосов
/ 17 октября 2010

У вас правильная идея, но div s не может иметь href s, поэтому я бы использовал два a тега в #question-wrapper, чтобы ваш HTML выглядел следующим образом:

<div id="question-wrapper">
    Would you like to continue on to 
    <span id="url">space where link is</span><br/>
    <a id="follow">CONTINUE</a><br/>
    <a id="dontfollow" href="#">STAY HERE</a>
</div>

Кроме того, если вы поместите href в кавычки, он будет отображаться буквально, поэтому

$("#follow").attr('href', "($(this).attr('href'))");

сделает #follow, если это A, похожим на:

<a href="($(this).attr('href'))">blah</a>

Кроме того, вы уже создали thisurl, так что используйте его.Также используйте var, так как без объявления их переменные становятся глобальными (свойства window):

$("#follow").attr('href', thiurl);

Так что все это будет выглядеть так:

$(function() {                                            // <== DOC ready

    $("#question-wrapper").hide();                        // Hide the QR to begin

    $("a.external").click(function() {    // Click handler for all external links

        var thisurl = $(this).attr('href'),                            // The url
            $qr = $("#question-wrapper");                               // The QR

        $qr.fadeIn('normal');                                      // Show the QR

        $("#follow").attr('href', thisurl);              // Set the URL of FOLLOW

          // Make #url a working link too
        $("#url").html('<a href="' + thisurl + '">' + thisurl + '</a>');

        $("#dontfollow").click(function() {
            $qr.fadeOut('normal');
            return false;
        });

        return false;
    });
});​

Попробуйте это с помощью jsFiddle

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