2013-10-22 39 views
0

我有一個<span>一個電子商務網站,其中包含的產品詳細信息頁面上的每個產品的SKU如下改變:獲得價值是動態的一個選擇框

<span class="VariationProductSKU">052077</span> 

當客戶選擇尺寸在以下<select>菜單...

<div class="productOptionViewSelect"> 
    <select id="4ab0094cccc675de3daaa83d6b1819e2" class="validation" name="attribute[110]"> 
      <option selected="selected" value=""> -- Please Choose an Option -- </option> 
      <option value="69">S</option> 
      <option value="70">M</option> 
      <option value="71">L</option> 
      <option value="72">XL</option> 
      <option value="73">XXL</option> 
    </select> 
</div> 

的SKU顯示在<span>標籤被動態地更新如下(在本例中,他們選擇的尺寸「L」):

<span class="VariationProductSKU">052077.L</span> 

我需要使用jQuery獲取包含新動態更新SKU的<span>標記的值。我嘗試了以下jQuery代碼,但它似乎總是將我的標記<span>的前一個值傳回給我,而不是新值。

if ($('div.productAttributeList').html() !== ''){ 
    $("div.productOptionViewSelect select").on('change', function() { 
     var val = ""; 
     val = $('span.VariationProductSKU').text().trim(); 
     alert(val); 
    }); 
} 

任何有關如何從<span>標籤中獲得正確值的信息都將不勝感激!

+1

你在哪裏更新跨越內容? – tymeJV

+0

span的內容正在被我無權訪問的遠程jQuery腳本更新。這發生在select元素改變時自動發生。 – rynoceris

+0

@ user2908769什麼是您使用某個插件的遠程jQuery腳本? – PSL

回答

0

嘗試等待了一下遠程腳本來完成:

if ($('div.productAttributeList').html() !== '') { 
    $("div.productOptionViewSelect select").on('change', function() { 
     var val = ""; 

     setTimeout(function() { 
      val = $('span.VariationProductSKU').text().trim(); 
      alert(val); 
     }, 50); // adjust this value until it's working reliably 
    }); 
} 
+0

這似乎工作得很好,我唯一擔心的是我不得不將超時時間增加到(1000)。我也想知道這個值是否會根據遠程服務器當前的流量和負載而改變。我會繼續玩這個,看看我能否找到理想的時間來設置超時時間。感謝您的建議! – rynoceris

+0

是的,這是使用setTimeout而不是跨度更新函數進行適當回調的缺點。 – isherwood

相關問題