动态appendTo选项

时间:2012-08-07 00:32:27

标签: jquery appendto

这是我用来从系统生成的逗号分隔列表中创建链接的一些jQuery,它始终运行良好。

在非常特殊的情况下,我需要脚本添加iframe并打开其中的链接。我想出了以下内容,但无法让它发挥作用。我的问题是,是否有可能推动脚本以这种方式工作?如果是的话,我哪里出错?

JQuery的

$('.assigns').each(function() {
var obj = $(this),
    assigns = obj.text().split(','),
    i = 0,
    len = assigns.length;
if (obj.text()) {
    for (i; i < len; i++) {
        var assign = assigns[i].replace(/(^\s*)|(\s*$)/g, '');
        if (assign != "") {

            assigns[i] = '<a onclick="$(' <iframe style="width: 100%; height: 5.5em;" scrolling="no" name="frame" src="http://www.example.com"></iframe>').appendTo('#assign_frame');" title="Assign to '+assign+'" class="button_main_build">'+assign+'</a>';
        }
    }
    obj.html(assigns.join(' '));

}

});

HTML

<div id="assign_frame"></div>

<p class="assigns">Bob Jones, Tom Smith, John Appleseed</p>

2 个答案:

答案 0 :(得分:1)

由于您使用的是jQuery,因此您可以使用jQuery方式。

var $links = $(); // empty jQuery container

for (i; i < len; i++) { 
  var assign = assigns[i].replace(/(^\s*)|(\s*$)/g, '');
  // Create jQuery link element
  // and attach events upon creation
  // allowing for delegation
  var $link = $('<a/>', {
    'class': 'button_main_build',
    href: '#',
    title: 'Assign to ' + assign,
    text: assign,
    click: function () {
      var $iframe = $('<iframe/>', {
        name: 'frame',
        src: 'http://www.example.com',
        scrolling: 'no',
      })
      $iframe.css({
        width: '100%',
        height: '5.5em'
      })
      .appendTo('#assign_frame')
    }
  });

  if (assign) 
    $links.add($link)
}

obj.append($links)

答案 1 :(得分:0)

这是实现预期目标的更好方法:

$('.assigns').each(function() {
var obj = $(this),
    assigns = obj.text().split(','),
    len = assigns.length;
if (obj.text()) {
    for (var i=0; i < len; i++) {
        var assign = assigns[i].replace(/(^\s*)|(\s*$)/g, '');
        if (assign != "") {
            obj.append( $('<a title="Assign to ' + assign + '" class="button_main_build">'+assign+'</a>') );
        }
    }
}
});

$(".button_main_build").live('click', function() {   
    $('<iframe style="width: 100%; height: 5.5em;" scrolling="no" name="frame" src="http://www.example.com"></iframe>').appendTo('#assign_frame');
});