2

试图弄清楚如何让 jQuery 检测引用页面上唯一 ID 的超链接。我不仅想在页面上单击元素时加载事件,而且如果有人使用分配给该#div 的唯一#id 直接链接到该页面,我也想加载该事件。

更新:

好的,这就是我到目前为止所拥有的,它没有触发。

    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();
        }

警报正在返回正确的#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这将检查页面加载中是否存在 a url,然后id根据hash值触发对元素的单击。

于 2013-05-15T02:59:40.703 回答