如何 select 一个 while 循环中的 href 变量?
How do I select a href variable that is in a while loop?
我有一个 while 循环 select 来自数据库的多个图像。我有一个带有 href 的 link,单击它时有一个功能,它将打开一个视频模式框。现在它只是 selecting 第一个 href link,不管哪个 selected。我如何确保它是正确的 href 而不仅仅是第一个?
PHP:这部分工作正常。
while ($row = $q->fetch()):
?>
<li class="item <?php echo $row['type'];?>"><a href="<?php echo $row['link'];?>" class="test-popup-link">
<?php if($row['img']) { ?>
<img src="upload/videoCovers/<?php echo $row['img'];?>" alt="<?php echo $row['title'];?>">
<?php }
else { ?>
<img src="upload/videoCovers/playBtn.png" alt="<?php echo $row['title'];?>">
<?php } ?>
</a>
</li>
JavaScript:
$(document).ready(function(){
var videoLink = $(".test-popup-link").attr("href");
$('.test-popup-link').magnificPopup({
items: {
src: videoLink
},
type: 'iframe' // this is default type
});
});
我对该插件一无所知,但您可能希望使用 .test-popup-link
class 遍历所有元素并调用 .magnificPopup()
。考虑以下因素:
$(document).ready(function(){
$('.test-popup-link').each(function() {
$(this).magnificPopup({
items: {
src: $(this).attr('href')
},
type: 'iframe' // this is default type
});
});
});
编辑:快速浏览Magnific Popup Documentation后,看来您也可以使用以下示例。
[...] Use this method if you are creating a popup from a list of elements in one container. Note that this method does not enable gallery mode, it just reduces the number of click event handlers; each item will be opened as a single popup
html
<div class="parent-container">
<a href="path-to-image-1.jpg">Open popup 1</a>
<a href="path-to-image-2.jpg">Open popup 2</a>
<a href="path-to-image-3.jpg">Open popup 3</a>
</div>
javascript
$('.parent-container').magnificPopup({
delegate: 'a', // child items selector, by clicking on it popup will open
type: 'image'
// other options
});
因此,在您的情况下,您可能需要考虑将 ul
父级定位到您的列表。
$('.load-video').on('click', function(e) {
e.preventDefault();
var link = $(this).attr('href');
$('.test-popup-link').magnificPopup({
items: {
src: link
},
type: 'iframe' // this is default type
});
});
在 a 标签中添加 class
<a class="load-video test-popup-link" href="<?php echo $row['link'];?>">
让我指出您代码中的几个问题
$(document).ready(function(){
var videoLink = $(".test-popup-link").attr("href"); // ( 1 )
$('.test-popup-link').magnificPopup({ //( 2 )
items: {
src: videoLink //( 3 )
},
type: 'iframe' // this is default type
});
});
$(".test-popup-link").attr("href");
这里的代码$(".test-popup-link")
会return你所有带有classtest-popup-link
的元素,所以你会得到一个节点集合,这很好。现在,当您执行 .attr("href")
时,仅选择集合中的第一个节点,其 href 为 returned。
- 您正在尝试将插件应用于具有 class
test-popup-link
的所有元素,这很好,除非插件的内部配置相同。在您的情况下,它的 videoLink
值有所不同,因此您不能以通用方式使用它。 您必须使用循环来应用插件。
- 如上所述,您的
videoLink
仅包含第一个元素 href,并且只有此 第一个 href 值将应用于所有 。
因此解决方案是使用循环来应用插件。这是代码
$(document).ready(function(){
$.each('.test-popup-link',function() { //looping
$(this).magnificPopup({ // apply to each element in the loop
items: {
src: $(this).attr('href') // apply its respective href
},
type: 'iframe' // this is default type
});
});
});
我有一个 while 循环 select 来自数据库的多个图像。我有一个带有 href 的 link,单击它时有一个功能,它将打开一个视频模式框。现在它只是 selecting 第一个 href link,不管哪个 selected。我如何确保它是正确的 href 而不仅仅是第一个?
PHP:这部分工作正常。
while ($row = $q->fetch()):
?>
<li class="item <?php echo $row['type'];?>"><a href="<?php echo $row['link'];?>" class="test-popup-link">
<?php if($row['img']) { ?>
<img src="upload/videoCovers/<?php echo $row['img'];?>" alt="<?php echo $row['title'];?>">
<?php }
else { ?>
<img src="upload/videoCovers/playBtn.png" alt="<?php echo $row['title'];?>">
<?php } ?>
</a>
</li>
JavaScript:
$(document).ready(function(){
var videoLink = $(".test-popup-link").attr("href");
$('.test-popup-link').magnificPopup({
items: {
src: videoLink
},
type: 'iframe' // this is default type
});
});
我对该插件一无所知,但您可能希望使用 .test-popup-link
class 遍历所有元素并调用 .magnificPopup()
。考虑以下因素:
$(document).ready(function(){
$('.test-popup-link').each(function() {
$(this).magnificPopup({
items: {
src: $(this).attr('href')
},
type: 'iframe' // this is default type
});
});
});
编辑:快速浏览Magnific Popup Documentation后,看来您也可以使用以下示例。
[...] Use this method if you are creating a popup from a list of elements in one container. Note that this method does not enable gallery mode, it just reduces the number of click event handlers; each item will be opened as a single popup
html
<div class="parent-container">
<a href="path-to-image-1.jpg">Open popup 1</a>
<a href="path-to-image-2.jpg">Open popup 2</a>
<a href="path-to-image-3.jpg">Open popup 3</a>
</div>
javascript
$('.parent-container').magnificPopup({
delegate: 'a', // child items selector, by clicking on it popup will open
type: 'image'
// other options
});
因此,在您的情况下,您可能需要考虑将 ul
父级定位到您的列表。
$('.load-video').on('click', function(e) {
e.preventDefault();
var link = $(this).attr('href');
$('.test-popup-link').magnificPopup({
items: {
src: link
},
type: 'iframe' // this is default type
});
});
在 a 标签中添加 class
<a class="load-video test-popup-link" href="<?php echo $row['link'];?>">
让我指出您代码中的几个问题
$(document).ready(function(){
var videoLink = $(".test-popup-link").attr("href"); // ( 1 )
$('.test-popup-link').magnificPopup({ //( 2 )
items: {
src: videoLink //( 3 )
},
type: 'iframe' // this is default type
});
});
$(".test-popup-link").attr("href");
这里的代码$(".test-popup-link")
会return你所有带有classtest-popup-link
的元素,所以你会得到一个节点集合,这很好。现在,当您执行.attr("href")
时,仅选择集合中的第一个节点,其 href 为 returned。- 您正在尝试将插件应用于具有 class
test-popup-link
的所有元素,这很好,除非插件的内部配置相同。在您的情况下,它的videoLink
值有所不同,因此您不能以通用方式使用它。 您必须使用循环来应用插件。 - 如上所述,您的
videoLink
仅包含第一个元素 href,并且只有此 第一个 href 值将应用于所有 。
因此解决方案是使用循环来应用插件。这是代码
$(document).ready(function(){
$.each('.test-popup-link',function() { //looping
$(this).magnificPopup({ // apply to each element in the loop
items: {
src: $(this).attr('href') // apply its respective href
},
type: 'iframe' // this is default type
});
});
});