Скопируйте значение атрибута из одного атрибута во внутреннюю строку в другом - PullRequest
2 голосов
/ 01 сентября 2011

У меня есть тег <A>, в котором мне нужно скопировать значение атрибута HREF во внутреннюю строку в атрибуте REL.Чтобы быть конкретным:

<a href="XX-some-link-XX" class="cloud-zoom-gallery small" 
rel="useZoom: 'zoom1', smallimage: 'XX-this-is-where-i-want-to-copy-that-link-XX'">
<img />
</a>

Я смог частично добиться этого, выполнив следующее:

jQuery(document).ready(function() {
jQuery(".small").each(function() {
    var src = jQuery(this).attr('href');
    var a = jQuery(this).attr('rel', src);
});
});

Но это удаляет другие данные в атрибуте REL (например,useZoom).

Итак, мой вопрос - как скопировать значение attr и вставить его в определенную строку в значение другого атрибута?

Ответы [ 4 ]

1 голос
/ 01 сентября 2011

Жаль, что ваш rel не является правильно сформированным объектом JSON, или вы можете использовать JSON.parse() для выполнения работы.

Это, вероятно, громоздко, но довольно обобщенно.

$(function() {
    var $jq = $("a:eq(0)");
    var j = relParser($jq.attr("rel"));
    j["smallimage"] = $jq.attr("href");
    $jq.attr("rel",relBuilder(j));
    alert(relBuilder(j));
})

function relBuilder(obj) {
    var arr = [];
    for (attr in obj) {
        arr.push(attr+": '"+obj[attr]+"'");
    }
    return arr.join(", ");
}
function relParser(str) {
    var arr = str.split(",");
    var obj = {}; 
    for (var i=0; i<arr.length; i++) {
        var tmp = arr[i].split(":");
        obj[tmp[0].trim()] = tmp[1].trim();
    }
    return obj;
}
String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}
0 голосов
/ 01 сентября 2011

Если вы еще не добавили smallimage: в качестве атрибута в a s, вы можете сделать это

HTML

<a href="XX-some-link-XX" class="cloud-zoom-gallery small" 
rel="useZoom: 'zoom1'">
<img />
</a>

JS

$('.small').each(function(){
    var a = $(this).attr('href');
    var rel = $(this).attr('rel'); 
    $(this).attr("rel", rel + ", smallimage: '" + a + "'");
});

Пример: http://jsfiddle.net/jasongennaro/a9BRz/

Вам нужно будет использовать проверить элемент на панели результатов, чтобы увидеть, как он работает

0 голосов
/ 01 сентября 2011

Самич говорит что-то вроде этого (я не буду проверять, но, возможно, работает):

jQuery(document).ready(function() {
    jQuery(".small").each(function() {
        var src = jQuery(this).attr('href');
        var rel = jQuery(this).attr('rel');
        result = rel + src;
        var a = jQuery(this).attr('rel', result);
    });
});
0 голосов
/ 01 сентября 2011

вот пример добавления в конце:

jQuery(document).ready(function() {
   jQuery(".small").each(function() {
       var $this = $(this);
       $this.attr('rel', $this.attr('rel') + " " + $this.attr('src'));
   });
});

если вам нужно более конкретное - вам нужно отформатировать значение, как вам нужно. Как простые строки в JavaScript.

Не стесняйтесь получить значение атрибута в виде строки и изменить его, прежде чем добавлять в атрибут rel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...