这是我的剧本:
<script type="text/javascript">
function is_numeric(n){
return !isNaN(parseFloat(n)) && isFinite(n);
}
jQuery(document).ready(function(){
// Est-ce que on doit forcer l'ouverture d'un asset en particulier ?
var Hash = window.location.hash;
var Triggered = false;
if(Hash != undefined && Hash != ''){
Hash = Hash.substring(2);
if(is_numeric(Hash) === true && Hash > 0){
Triggered = true;
jQuery('.show-container[data-id="'+Hash+'"]').trigger('click');
}
}
if(Triggered === false){
jQuery('.show-container:first-child').trigger('click');
}
jQuery('.show-container').bind('click', function(e){
// On empêche l'action par défaut du lien
e.preventDefault();
if(ContainerEl.css('display') == 'none'){
ContainerEl.show(0, function(){
SubContainerEl.slideDown(300, function(){
// Other code there...
});
});
} else {
// On cache le tout
SubContainerEl.slideUp(300, function(){
ContainerEl.hide(0);
});
}
});
});
</script>
这是html
<h4 class="heading"><a class="show-container" data-id="1" href="javascript:void(0);">BC600 | <span id="assign_count_1">0</span> / 5</a></h4>
<div id="asset-data-1" data-ajax-loaded="false" class="row-fluid" style="display: none;">
<div data-container="true" class="span12" style="display: none; height: 310px; overflow: auto;"></div>
</div>
<h4 class="heading"><a class="show-container" data-id="2" href="javascript:void(0);">Ultrabook HP3608 | <span id="assign_count_2">9</span> / 25</a></h4>
<div id="asset-data-2" data-ajax-loaded="false" class="row-fluid" style="display: none;">
<div data-container="true" class="span12" style="display: none; height: 310px; overflow: auto;"></div>
</div>
问题是,当window.location.hash
不为空时,我想阅读它并提取信息。信息类似#a2
或#a23
......数字为AssetID
。
如果我看到有效的ID,我想触发点击,如果不是,我想在默认情况下触发第一个。
这不起作用,控制台没有给我任何错误。我提出了一些警告,以检查脚本是否足够远,是的,他确实做了,但触发器什么也没做。
感谢。
答案 0 :(得分:4)
您尝试在绑定之前触发点击。你的代码应该是这样的:
// This section orignally appeared after the triggering of the click
jQuery('.show-container').bind('click', function(e){
// Your code
});
if(Triggered === false){
jQuery('.show-container:first-child').trigger('click');
}
另外,请注意,根据您使用的jQuery版本,不推荐使用bind,应将其替换为on()。
jQuery('.show-container').on('click', function(e){
// Your code
});
答案 1 :(得分:0)
问题是你的哈希是一个字符串; is_numeric()将返回true,即使你传递了一个像'20'或'55'这样的字符串。
您需要将字符串转换为数字。
执行此操作的方法是:
var Hash = 'a23';
Hash = Hash.substring(2);
var actualNumber = Number(Hash); // Here you convert the string to number
这应该有用。