jquery每个循环为每个div写入数据

时间:2014-01-28 01:05:10

标签: javascript jquery loops

我希望这是有道理的。我有一个onclick,我试图用这个为每个div写这个数据。

    jQuery('.circle_counter_div').each(function() {
       var tagtext = '[circlecounter rel="' + jQuery('.circle_size').val() + '"][/circlecounter]';
    })

我正在克隆项目,但我只能为其中一项编写数据。如何为每个克隆项目写入数据?

因此,在上面的示例中,我希望tagtext等于

[circlecounter rel="' + jQuery('.circle_size').val() + '"][/circlecounter]
[circlecounter rel="' + jQuery('.circle_size').val() + '"][/circlecounter]
[circlecounter rel="' + jQuery('.circle_size').val() + '"][/circlecounter] 

完整代码 HTML

<div class="sc_options circle_counter_div" id="clone_this" style="display: block;"> 
  <input type="text" class="circle_size"/>
</div>
<div class="sc_options circle_counter_div" id="clone_this" style="display: block;"> 
  <input type="text" class="circle_size"/>
</div>
<div class="sc_options circle_counter_div" id="clone_this" style="display: block;"> 
  <input type="text" class="circle_size"/>
</div>
<input type="submit" class="sc_options circle_counter_div" id="insert" name="insert" value="<?php _e("Insert", 'themedelta'); ?>" onClick="insertcirclecountershortcode();" style="display:none"/>

脚本

// Insert the column shortcode
function insertcirclecountershortcode() {

    var tagtext;
    var start;
    var last;

    var start = '[circlecounters]';
    var last = '[/circlecounters]';

    jQuery('.circle_counter_div').each(function() {
       var tagtext = '[circlecounter rel="' + jQuery('.circle_size').val() + '"][/circlecounter]';
    })

    var finish = start + tagtext + last;

    if (window.tinyMCE) {
        window.tinyMCE.execInstanceCommand(window.tinyMCE.activeEditor.id, 'mceInsertContent', false, finish);
        //Peforms a clean up of the current editor HTML.t
        //tinyMCEPopup.editor.execCommand('mceCleanup');
        //Repaints the editor. Sometimes the browser has graphic glitches.
        tinyMCEPopup.editor.execCommand('mceRepaint');
        tinyMCEPopup.close();
    }
    return;
}

2 个答案:

答案 0 :(得分:1)

扩展答案:在提供了更多信息之后,您可能只是错过了循环上的索引和值属性。很难说,因为提供的示例代码很少。

$('.test').each(function(i,v) {
   var tagtext = $(v).html();
    console.log(tagtext);
})

http://jsfiddle.net/4xKvh/

原始答案:

使用use classes而不是Id。 Id只能在页面上使用一次。
 由于只有一次出现,jQuery会将结果过滤为1,即使标记可能在页面上有多个具有该Id的元素。这是为了利用内置的浏览器函数getElementById()。

对于此jsFiddle

的结帐凭证

使用class属性更适合您尝试做的事情。

jQuery('.clone_this').each(function() {
   var tagtext = '[something][/something]';
})

标记:

<div class="clone_this"></div>

这将允许jQuery返回像您一样寻找

的元素数组

答案 1 :(得分:0)

这就是我需要的......终于让它运转了。

tagtext = ' ';

jQuery('#circle_counter_div .circlecounter').each(function() {
    tagtext += '[circlecounter rel="' + jQuery('.circle_size').val() + '" datathickness="' + jQuery('.circle_thickness').val() + '" datafgcolor="' + jQuery('.circle_color').val() + '" text="' + jQuery('.circle_text').val() + '" fontawesome="' + jQuery('.font_awesome_icon').val() + '" fontsize="' + jQuery('.circle_font_size').val() + '"][/circlecounter]';
});

var start = '[circlecounters]';
var last = '[/circlecounters]';
var finish = start + tagtext + last;