用&符号重新定义ID

时间:2018-11-24 01:14:35

标签: php jquery

使用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,使其在脚本的其余部分中起作用?

1 个答案:

答案 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>