我有2个按钮,A和B.点击A时,标签会发生变化,我想调用window.onhashchange
功能。但是,在单击B时,我手动将标签附加到URL。在后一种情况下,我不希望触发window.onhashchange
。
答案 0 :(得分:0)
没有任何代码我可以建议检查导致事件的按钮的ID并相应地采取行动。
答案 1 :(得分:0)
在this answer和this one的帮助下,您可以临时删除事件句柄。这是working example of 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
进行了测试。
答案 2 :(得分: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'
};
希望有所帮助。