0

我有 2 个按钮,A 和 B。单击 A 时,主题标签会发生变化,我想调用该window.onhashchange函数。但是,在单击 B 时,我手动将主题标签附加到 URL。在后一种情况下,我不想window.onhashchange被触发。

4

3 回答 3

0

根据您的问题,我假设您已经通过 PHP 生成了 HTML:

<ul id='list-of-links'>
    <li id='A'><a href="#posA">Link A</a></li>
    <li id='B'><a href="#posB">Link B</a></li>
</ul>

有了它,您希望 A 做 B 以外的事情。在您的 JavaScript 中,您可以使用散列函数。

var targetHash = window.location.hash.slice(1);

if( targetHash != 'posB' ) {
    //do something as it's not 'posB'
};

希望有帮助。

于 2013-04-15T16:06:12.307 回答
0

在这个答案这个答案的帮助下,您可以临时删除事件句柄。这是带有事件的 jsfiddle.net 的工作示例,click因此假设jQuery >= 1.8它会相似,因此是这样的:

// Initialization, add some events
$.hashchange(...);

// Store event handles for hashchange
hashchange_handles = [];
$.each( $._data($('#foo').get(0), "events")['hashchange'], function(i,handle){
    // alert(handle.handler);
    hashchange_handles.push(handle.handler);
});

// Remove handles
$.off('hashchange');

// Do your stuff here

// Restore event handler
length = hashchange_handles.length;
for(var i=0; i<length; i++) {
    $.hashchange( hashchange_handles[i]);
}

它工作了click所以希望它会工作hashchange

注意:我知道代码并不完美,您应该对其进行调整。另外,我仅针对click.

于 2013-04-15T15:59:48.143 回答
0

如果没有任何代码,我只能建议检查导致事件的按钮的 ID 并采取相应措施。

于 2013-04-15T15:20:09.663 回答