我有 2 个按钮,A 和 B。单击 A 时,主题标签会发生变化,我想调用该window.onhashchange
函数。但是,在单击 B 时,我手动将主题标签附加到 URL。在后一种情况下,我不想window.onhashchange
被触发。
问问题
305 次
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 回答