2013-07-15 41 views
1

我有一個在網站上運行的Twitter Bootstrap傳送帶。傳送帶的代碼是使用Smarty模板生成的。我有很多其他的輪播使用相同的代碼運行,但是關於這個的一些令我感到悲傷。圖像旋轉得很好,但是當我點擊其中一個控制旋轉木馬的控件時出現錯誤。下面是我在Firebug得到的錯誤:Bootstrap傳送帶控制鏈接生成錯誤

TypeError: $active.attr(...) is undefined 
, curId = $active.attr('id').substring(7) (bootstrap.js, line 343) 

器(Chrome拋出一個關於子警告被未定義未定義元素)

如果你沒有一個副本方便,這裏是有關節bootstrap.js的:

, slide: function (type, next) { 
var $active = this.$element.find('.item.active') 
, $next = next || $active[type]() 
, isCycling = this.interval 
, direction = type == 'next' ? 'left' : 'right' 
, fallback = type == 'next' ? 'first' : 'last' 
, that = this 
, e = $.Event('slide', { 
relatedTarget: $next[0] 
}) 
, curId = $active.attr('id').substring(7) 

看來,這個錯誤的最可能的原因是沒有.item元素(旋轉木馬圖片)是目前。主動。或者活動輪播元素沒有ID。但是我可以通過觀看Firebug中的代碼來判斷這些事情是否都發生了。

在情況下,它可以幫助,這裏是產生轉盤控制,顯示出每個元件具有ID Smarty的代碼,並且所述第一元件被分配的類的。主動:

<div class="text-control"> 
      {foreach from=$articles item=article name=artforeach} 
       <a {if $article.source|strlen > 7}href="{$article.source}"{else}href="javascript:void(0)"{/if} 
        {if $smarty.foreach.artforeach.first} class="active"{/if} id="name{$article.id}" 
        data-target="{$smarty.foreach.artforeach.index}"> 
        <h3>{$article.name}</h3> 
        <p>{$article.teaser[0].content|strip_tags|truncate:100:"..."}</p> 
       </a> 
      {/foreach} 
     </div> 

任何人有什麼線索可以在這裏發生?

回答

0

經過一整天的嘗試不同的事情和檢查代碼,我發現問題與「事件冒泡」的概念有關。雖然.active類,ID和數據目標都應用於a元素,但click事件實際上是由a元素內的h3元素處理的。而且由於h3沒有class .active或ID或數據目標,轉盤崩潰了。我想也許它與h3元素的特殊塊級別狀態有關,但是如果您將span元素或i元素放在那裏,也會發生這種情況。

此代碼:

<div class="text-control"> 
      {foreach from=$articles item=article name=artforeach} 
       <a {if $article.source|strlen > 7}href="{$article.source}"{else}href="javascript:void(0)"{/if} 
        {if $smarty.foreach.artforeach.first} class="active"{/if} id="name{$article.id}" 
        data-target="{$smarty.foreach.artforeach.index}"> 
        {$article.name} 
        <p>{$article.teaser[0].content|strip_tags|truncate:100:"..."}</p> 
       </a> 
      {/foreach} 
     </div> 

所有我所做的就是刪除H3標籤。有趣的是,p標籤似乎不會影響事件冒泡。只要a元素的開頭有純文本,其他的一切似乎都沒有問題。