我试图阻止我的autoBike();如果我的#bike-main-slider div.bike
数据自行车属性值不存在,则运行自行车功能。
<script>
var bike = '<?=(isset($_REQUEST['bike']) ? htmlentities($_REQUEST['bike']) : null)?>';
autoBike = function () {
var bikeIndex = $('#bike-main-slider div.bike[data-bike=' + bike + ']').index();
mainSlider.goToSlide(bikeIndex);
};
autoBike();
</script>
<div id="slideshow">
<div class="bike" data-bike="50cc"></div>
<div class="bike" data-bike="100cc"></div>
<div class="bike" data-bike="150cc"></div>
<div class="bike" data-bike="200cc"></div>
<div class="bike" data-bike="250cc"></div>
<div class="bike" data-bike="350cc"></div>
</div>
这可能吗?
例如,如果我的网址是......
http://example.com/?bike=450cc
并且你可以看到我的#slideshow div中没有450cc,所以如果data-bike属性值不存在,那么无论如何都要阻止我的autoBike();
函数运行?
使用jQuery
由于
答案 0 :(得分:2)
你可以检查调用选择器时返回的对象的长度,如果为零,只需从函数返回你做的第一件事。
var autobike = function () {
var elms = $('#bike-main-slider div.bike[data-bike=' + bike + ']');
if (elms.length === 0)
return;
// Do your stuff here, at least one element matched.
}
以下是上面代码的工作示例:http://jsfiddle.net/Gp5Xw/
长度属性与jQuery的.size()
使用选择器调用jQuery函数将返回一个数组,该数组将具有可以读取的length属性,就像任何其他JavaScript数组一样。使用jQuery的.size()
方法将产生与读取length属性相同的结果,但它需要额外的函数调用,这是完全没必要的。这是一个微观优化,真正使用长度属性,但仍然。
来自.size()
的jQuery文档:
.size()方法在功能上等同于.length属性; 但是, .length属性是首选,因为它没有 函数调用的开销。
答案 1 :(得分:1)
autoBike = function () {
var $bike = $('#bike-main-slider div.bike[data-bike=' + bike + ']');
if($bike.size() > 0) {
var bikeIndex = $bike.index();
mainSlider.goToSlide(bikeIndex);
}
};
答案 2 :(得分:1)
这应该有用......
$(document).ready(function() {
var bike = '<?=(isset($_REQUEST['bike']) ? htmlentities($_REQUEST['bike']) : null)?>';
$('bike').each(function() {
if ($(this).attr('data-bike') === bike) {
autoBike();
}
});
});
然后autoBike()只会运行,如果你的自行车的URL参数作为数据自行车属性存在...