2

ページ上の一意の ID を参照するハイパーリンクを jQuery で検出する方法を見つけようとしています。ページで要素がクリックされたときだけでなく、誰かがその #div に割り当てられた一意の #id を使用してページに直接リンクした場合にも、イベントをロードしたいと考えています。

アップデート:

OK、これは私がこれまでに持っているもので、起動していません。

    function opencontact() {
        $("#first-name-check").hide();
        $("#last-name-check").hide();
        $("#phone-number-check").hide();
        $("#email-address-check").hide();
        $("#customer-message-check").hide();
        $("#send").button("disable");
        $("#email-form").dialog("open");
    }

    $(".email").click(opencontact);

    var hash = window.location.hash.substring(1);
        alert(hash);
        if (hash == "contact") {
            opencontact();
        }

Alert は正しい #hash を返しているため、何が問題なのかわかりません。

ダイアログは次のように初期化されます。

   $(function() {
        $("#email-form").dialog({
            autoOpen: false,
            resizable: false,
            draggable: false,
            closeOnEscape: false,
            height: 600,
            width: 540,
            modal: true,
            buttons: {
                "Send Joe Your Message": {
                    text: "Send Joe Your Message",
                    id: "send",
                    click: function() {
                        $.post("email.php", $(this).find('input, textarea').serialize());
                        $(this).find('input, textarea').val("");
                        $(this).dialog("close");
                    },
                },
                Cancel: function() {
                    $(this).find('input, textarea').val("");
                    $(this).dialog("close");
                }
            }
        });

    });
4

2 に答える 2

2

このような何かがうまくいくはずです:

//this will grab the url from the address bar
var oldUrl = document.location.href;
//now we need to find just the part after the #
var urlSlice = oldUrl.split('#',oldUrl.length);
//urlSlice is now an array of two items (one before the '#' one after)
//from which we can grab the div id
var divId = urlSlice[1];

//then if it is the id you want
if( divId === 'desiredID' ) {
    clickHandler();
}

function clickHandler() {
    //do stuff
}

個人的には、それをすべて関数に入れてきれいにしますが、関数の外でも機能します。

于 2013-05-15T03:02:58.203 に答える
1

あなたはこれを行うことができます:

$(document).ready(function() {
  // Attach click handlers and set your dialog here..
  if(window.location.hash.length > 1) {
    switch(window.location.hash) {
      case '#contact':
        $('.email').click();
        break;
      case '#anyotheridyouvegot':
        $('.classoftheelementtobeclickedon').click();
        break;
    }
  }
});

これはhash、ページの読み込み時に があるかどうかを確認し、値に応じてurl要素のクリックをトリガーします。idhash

于 2013-05-15T02:59:40.703 に答える