簡體   English   中英

如何將后面代碼中的循環創建的 Javascript 函數組合到一個函數中,這樣我就不必重復了?

[英]How could I combine Javascript functions created by a loop in the code behind in to one function so I don't have to repeat?

你如何在 jquery 中運行變量以與 php 中的 foreach 查詢鏈接?

我有一個包含許多圖像的頁面,這些圖像是 iframe 的占位符。 當您單擊 rsPlayBtn div 時,圖像將替換為 iframe。 我能想到的唯一方法是增加 id 和類($counter),然后為每個函數創建一個 jquery 函數。 這似乎是一種非常低效的 i 方式,圖像/iframe 的數量也是可變的,因此使用這種方法我必須創建大量不會每次都使用的變量。 我怎樣才能將我所做的合並到一個函數中,這樣我就不必重復了?

echo "<div class='rsBtnCenterer' id='{$counter}'><div class='rsPlayBtn'>.";
echo "<img class='{$counter}'..."; 

--------

$('#1').click(function(){
var video = '<iframe src="'+ $('.1').attr('data-video') +'"></iframe>';
$('#1').hide();
$('.1').replaceWith(video);
});

$('#4').click(function(){
var video = '<iframe src="'+ $('.4').attr('data-video') +'"></iframe>';
$('#4').hide();
$('.4').replaceWith(video);
});

我不太清楚你的問題是什么。 我假設最后一個是您的問題:

我怎樣才能將我所做的合並到一個函數中,這樣我就不必重復了?

在我看來,您正在低效地使用 class 和 id。

echo "<div class='rsPlayBtn' id='{$counter}_btn'>";
echo "<img id='{$counter}_img'..."; 


$('.rsPlayBtn').click(function(event){
  var counter = event.target.id.substring(0,1);
  var video = '<iframe src="'+ $("#" + counter + "_img").attr('data-video') +'"></iframe>';
  $("#" + counter + "_btn").hide();
  $("#" + counter + "_img").replaceWith(video);
});

像這樣,您不需要為每個按鈕創建單獨的功能。 jQuery 使用“rsPlayBtn”類找到所有按鈕。 您可以使用 event.target 屬性獲取計數器。 其余的代碼與您的代碼相同,帶有插入的計數器。

如果您想針對單個元素,也應該避免使用 class 屬性。 始終為此使用 id 屬性,它要快得多。 這部分是不好的做法,看看我是如何改變的?:

echo "<img class='{$counter}'..."; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM