2015-04-11 2 views
1

Мне нужно оптимизировать эту реализацию Javascript, чтобы я не копировал скрипт для каждого элемента, который должен иметь Javascript.Оптимизируйте Javascript для нескольких элементов

Следующий код - это то, что у меня есть на данный момент - мне нужно, чтобы Javascript вызывал каждый элемент с именем класса copy.

<body> 
    <a id="copy-1" class="copy" data-clipboard-text="hello.playcraft.com" title="Click to copy me.">Copy 1 to Clipboard</a><br /> 
    <a id="copy-2" class="copy" data-clipboard-text="localhost:25565" title="Click to copy me.">Copy 2 to Clipboard</a> 
    <script src="/assets/js/ZeroClipboard.min.js"></script> 
    <script> 
     var client = new ZeroClipboard(document.getElementById("copy-1")); 
     client.on("ready", function(readyEvent) { 
     // alert("ZeroClipboard SWF is ready!"); 
      client.on("aftercopy", function(event) { 
       // `this` === `client` 
       // `event.target` === the element that was clicked 
       event.target.style.display = "none"; 
       alert("Copied text to clipboard: " + event.data["text/plain"]); 
      }); 
     }); 
    </script> 
</body> 
+1

document.querySelector ("копия")? –

+0

@SimonH Это будет 'querySelectorAll' – Jonathan

ответ

0

Вы можете использовать функцию.

function addCopyHandler(id) { 
    var client = new ZeroClipboard(document.getElementById(id)); 
    client.on("ready", function(readyEvent) { 
    // alert("ZeroClipboard SWF is ready!"); 
     client.on("aftercopy", function(event) { 
      // `this` === `client` 
      // `event.target` === the element that was clicked 
      event.target.style.display = "none"; 
      alert("Copied text to clipboard: " + event.data["text/plain"]); 
     }); 
    }); 
} 

addCopyHandler("copy-1"); 
addCopyHandler("copy-2"); 

И тогда вы можете добавить петлю

for(var i = 1; i <= 10; i++) { 
    addCopyHandler("copy-" + i); 
} 
Смежные вопросы