使用Sly的滚动代码(http://darsa.in/sly/)。
页面上有多个Sly轮播,我需要修复框架ID
我用'#= basic-XXX'生成它们,其中XXX是相册的记录。
标准代码是这样的:
var $frame = $('#basic');
var $slidee = $frame.children('ul').eq(0);
var $wrap = $frame.parent();
我尝试从数据库中读取ID,包括附加的记录号。
var $frame = $("[id^=basic-]"); // start with...
// trying these two lines, but they FAIL
var num = $frame.slice(7);
var $frame = $("#basic-"+num);
//from here $frame should be redefined as #basic-THENUMBER
var $slidee = $frame.children('ul').eq(0);
var $wrap = $frame.parent();
有什么主意,我该如何使用ID更新var $ frame,使其在脚本的其余部分中起作用?
答案 0 :(得分:1)
$("[id^=basic-]")
将返回与选择器匹配的元素,然后您可以使用.attr('id')
获取第一个元素的ID值。如果只有一个ID以basic-
开头的元素,那么它将起作用:
$frame = $("[id^=basic-]").attr('id');
请注意,当您使用String.slice
时,字符位置从0开始,所以我想您可能想要:
var num = $frame.slice(6);
观看此演示:
var $frame = $("[id^=basic-]").attr('id');
console.log($frame);
var num = $frame.slice(6);
console.log(num);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
<span id="basic-355">hello world!</span>
</div>
如果您有多个具有匹配ID的元素,则需要使用.each
或类似的元素对其进行迭代:
var $frames = $("[id^=basic-]");
$frames.each(function () {
let id = $(this).attr('id');
console.log(id);
let num = id.slice(6);
console.log(num);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
<span id="basic-355">hello world!</span>
<span id="basic-562">hello world!</span>
</div>