2011-02-16 131 views
0
$(document).bind("ready", function(){ 

    // Loop each construct tag 
    $('construct').each(
      alert('running'); 

     function() 
     { 
      // Grab data 
      var jC2_events = $(this).html().split('\n'); 
      $(this).html(''); 

      // Data 
      var jC2_html = ''; 

      // Add wrapper tags 
      jC2_html += '<div class="jC2_Outer">'; 
      jC2_html += '<div class="jC2_Toolbar">'; 
      jC2_html += '<a href="#" class="jC2_ToolbarA">Plain Text</a>'; 
      jC2_html += '<a href="#" class="jC2_ToolbarA">Help</a>'; 
      jC2_html += '</div>'; 
      jC2_html += '<div class="jC2_Container">'; 

      // Loop each event 
      for(var jC2_looper = 0; jC2_looper < jC2_events.length; jC2_looper++) 
      {   
       // Split event into components 
       var jC2_components = jC2_events[jC2_looper].split(':'); 

       // Event wrapper 
       jC2_html += '<div class="jC2_EventNum">' + (jC2_looper + 1) + '</div>' 
       jC2_html += '<div class="jC2_EventWrapper">'; 
        jC2_html += '<div class="jC2_EventObject">' + jC2_components[0].trim() + '</div>'; 
        jC2_html += '<div class="jC2_EventBreak"></div>'; 
        jC2_html += '<div class="jC2_EventDesc">' + jC2_components[1].trim() + '</div>';   
       jC2_html += '</div>'; 

       // Actions 
       jC2_html += '<div class="jC2_ActionWrapper">'; 

       // Loop remaining params 
       for(var jC2_looper2 = 2; jC2_looper2 < jC2_components.length; jC2_looper2++) 
       { 
        var jC2_actionClass; 
        if((jC2_looper2%2) == 0){ 
         jC2_actionClass = 'jC2_Odd'; 
        }else{ 
         jC2_actionClass = 'jC2_Even'; 
        } 

        jC2_html += '<div class="jC2_ActionLeft"></div>'; 
        jC2_html += '<div class="jC2_ActionDesc ' + jC2_actionClass + '">' + jC2_components[jC2_looper2].trim() + '</div>'; 
        jC2_html += '<div class="jC2_Clear"></div>'; 
       }    

       jC2_html += '</div><div class="jC2_Clear"></div>'; 
      } 

      // End wrappers 
      jC2_html += '</div>'; 
      jC2_html += '<div class="jC2_FooterInfo"><div class="jC2_Scirra"><a class="jC2_AS" href="http://www.scirra.com">Scirra.com</a> - Software in Motion</div>Generated with <a class="jC2_AF" href="http://www.scirra.com">JConstruct 1.0</a></div>'; 
      jC2_html += '</div>'; 
      $(this).html(jC2_html); 
     } 
    ); 

}); 

我的HTML页面:jQuery为什么这个循环运行两次?

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.<br /><br /> 

<construct> 
System:Every tick:Set width to Y-100:Set angle to Atan(Self.X-Mouse.X):Finish it 
Sprite:On event:Do this:Do that:Do something else 
Clock:Ticks and chimes:Do something:Do it again!:Add one 
</construct> 

<br /><br />When an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. 

我只是想循环每个标签和呈现它的数据内容格式良好的HTML,但我有麻烦解析数据,到各行,并有麻烦因为当我在其中放置警报时,该循环似乎运行两次。

+1

这个'alert('running');`放置错误。它不能在那里它现在。我看到3个循环......哪一个是有问题的? – 2011-02-16 23:22:44

+0

从每个类和变量中删除所有'jC2_'前缀,肯定会使您的代码更加明智。你也不需要每个元素上的类都可以选择它。现在,CSS(和jQuery)能够成为非常强大的选择器。 – 2011-02-16 23:28:26

回答

1
// Loop each construct tag 
$('construct').each(
     alert('running'); 

    function() 
    { 

应改为:

// Loop each construct tag 
$('construct').each(
    function() 
    { 
     alert('running'); 

这是当前无效,并可能导致在不同的浏览器意外和不一致的行为。

http://jsfiddle.net/uBFAK/

0

警报不应该是功能之外。