из двух массивов jquery получить доступ к элементам и создать третий?
Здорова!
Нужно элементы из двух блоков прочитать, получить доступ к значениям и создать третий блок, как мне получить доступ к элементам из блоков? Пытаюсь в цикле обойти не получается получить доступ к атрибутам. Вот код:
$(function() {
//1 получаем массивы элементов
var a=$("#menu a");
var c=$("#content div");
//2. обходим элементы в цикле
for(i=0;i<c.length;i++)
{
//alert(a.attr("href"));//работает, но возвращает постоянно первый элемент
//alert(a[i].href);//работает полную ссылку возвращает
//alert(c[i].id);//работает возвращает каждый раз разные айди
alert(c[i].text);//не работает
}
});
Как можно получить доступ в цикле к данным javaScript??? Например не могу получить доступ в цикле к тексту что находится между тегов <div></div>, запись c[i].text не работает. |
alert($(c[i]).text()); |
ninja2,
c.eq(i).text() Если пользуете библиотеку то читайте её апи, это не массивы элементов, а jQuery объекты. Перебор их элементов через метод each |
var a=$("#menu a");
a.each(function () {
alert($(this).text());
});
|
работает, а от я создал еще один кот, пытаюсь событие input добавить к ссылке и вывожу текстовое поле, но почему то не добавляется событие input к форме и ссылке.
Вот код:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
#menu a{
margin: 5px;
}
</style>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script>
$(function() {
//1 получаем массивы элементов
var a=$("#menu a");
var d=new Array();
//2. обходим элементы в цикле
for(i=0;i<a.length;i++)
{
var j=$("<input/>",{
val: $(a[i]).text(),
on: {
input: function() {
$(a[i]).text(this.value);
}
}
});
d[i]=j;
}
$("#edit").append(d);
});
</script>
</head>
<body>
<div id="menu">
<a href="#dfdf">1df</a>
<a href="#fgg44">2fsdfsd</a>
<a href="#Df324">3dsfdsf</a>
<a href="#dfs33">4sdfsdf</a>
<a href="#dfs35">5kkk</a>
</div>
<hr>
<div id="edit"></div>
</body>
</html>
в старом коде там идет перебор через map и там так написано:
var d = $("<input/>",
{
val: $(b).text(),
on: {
input: function() {
$(b).text(this.value)
}
}
});
этот работает, а почему мой не работает? |
ninja2, :)
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
#menu a{
margin: 5px;
}
</style>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script>
$(function() {
function c() {
var a = $("#menu a"),
a = $.map(a, function(a) {
return a.text
});
return a
}
alert(c().join("\n"));;
});
</script>
</head>
<body>
<div id="menu">
<a href="#dfdf">1df</a>
<a href="#fgg44">2fsdfsd</a>
<a href="#Df324">3dsfdsf</a>
<a href="#dfs33">4sdfsdf</a>
</div>
</body>
</html>
|
Цитата:
|
ninja2,
почему не работает боолее подробно читать тут http://javascript.ru/basic/closure#p...-ispolzovaniya |
рони,
это не то, нужно событие input добавить к полю input чтобы работало Этот код не работает:
var j=$("<input/>",{
val: $(a[i]).text(),
on: {
input: function() {
$(a[i]).text($(d[i]).text);//эта строчка не правильная
}
}
});
Пробовал по разному $(a[i]).text(this.value); так не работает и так тоже нет $(a[i]).text($(j[i]).text()); |
ninja2,
почему не работает и как исправить написал вам выше |
ninja2, исправленный вариант, можно сделать и по другому но проще через map или each
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
#menu a{
margin: 5px;
}
</style>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script>
$(function() {
//1 получаем массивы элементов
var a = $("#menu a");
var d = new Array();
//2. обходим элементы в цикле
for (i = 0; i < a.length; i++) {
var j = $("<input/>", {
val: $(a[i]).text(),
on: {
input: (function(k) {
return function() {
$(a[k]).text(this.value);
}
})(i)
}
});
d[i] = j;
}
$("#edit").append(d);
});
</script>
</head>
<body>
<div id="menu">
<a href="#dfdf">1df</a>
<a href="#fgg44">2fsdfsd</a>
<a href="#Df324">3dsfdsf</a>
<a href="#dfs33">4sdfsdf</a>
<a href="#dfs35">5kkk</a>
</div>
<hr>
<div id="edit"></div>
</body>
</html>
|
Цитата:
input: function(x) {
return function(){
$(a[x]).text(this.value);//эта строчка не правильная
}
}(i)
А что (i) означает в конце, это типо в место x и в функцию передавать или копию i?. Синтаксис запутаный. |
Цитата:
Цитата:
|
Цитата:
|
от типо код, и куда второй дописать? :)
var mass1=new Array(),mass2=new Array();
var a;
a=map(mass1,function(){});
Я через цыклы решил делать потому что через map не получилось 2 массива передать. Наверно лучше через цыкл делать, универсальнее |
ninja2,
var mass1=new Array(),mass2=new Array(); var a , c = []; a=map(mass1,function(a,b){ c[b] = mass2[b]; return a }); |
От еще не получается добавить тег data, от этот код не работает
var z=$("</p>",{
data: {
b:i
}
});
Прошлый код был такой
c = $("<p/>", {
data: {
b: b
}
});
где b присваивается индекc из map. У меня идет сортировка по map, Но у меня оно не сортирует. Пробовал тоже сделать через функцию типо так
data: {
b: function(x){
return function(){
return a[x];
}
}(i)
}
та и просто
data: {
b: function(x){
return function(){
x;
}
}(i)
и так
data: {
b: function(x){
return function(){
x;
}
}(i)
Ниче не работает, не сортирует, а в коде не могу посмотрить присвоило ли дата или нет. Это походу не индексы, а объекты идут. |
Почему через цикл когда делаю данный код не работает?
var z=$("</p>",{
data: {
b: a[i]
}
});
У меня у параграфа не появляется data b, когда делается через map то появляется, и от когда так делаю z.data("b",a[i]);, то добавляется, в чем может быть проблема? |
У меня в data пусто даже когда я явно укажу
var z=$("</p>",{
data: {
b: "b"
}
});
А от так от появляется bb z.data("bb","hellow);. И через map работает от такой код, тоже появляется data
c = $("<p/>", {
data: {
b: b
}
Коды одинаковые, ничего ж не менял, а че в одном случае работает, а в другом пустота хз. Мб. где ошибку сделал не знаю. |
| Часовой пояс GMT +3, время: 01:35. |