2012-09-07 184 views
0

首先我很抱歉如果因爲我一直在尋找很多小時而問這樣的問題。請忍受我的問題。讓我詳細說明一下。我使用「value」屬性動態地將選項添加到具有「value」屬性的選擇元素,如簡單的10位電話號碼,如7465768574 &文本作爲「Name(PhoneNumber)」,當用戶選擇時,將其添加到無序列表中以顯示Users selected選項。要刪除該列表項,我提供了一個圖像,點擊時首先檢查選擇元素&中是否存在相應的選項,然後從無序列表中刪除相同的列表項。&從select元素中刪除相應的選項。現在,爲了實現這一點,我正在檢查'值'屬性。問題是,如果該值屬性是電話號碼的大數字,我的邏輯失敗,因爲jQuery不能正確提取該值。如果它是一個非常大的數字,它將返回0,如果它的範圍在60億到70億之間(逗號不存在),它將返回一些隨機數。我不知道問題是什麼。這與價值類型或某事有關嗎?jquery屬性值返回undefined,如果值很大,則返回0

<select multiple="multiple" id="select1"> 
    <option class="selectedoptions" value="8234567890">Joker(8234567890)</option> 
    <option class="selectedoptions" value="2">Batman(2)</option> 
    <option class="selectedoptions" value="3">Superman(3)</option> 
    <option class="selectedoptions" value="4">Spiderman(4)</option> 
    <option class="selectedoptions" value="5">Ironman(5)</option> 
    <option class="selectedoptions" value="6">Thor(6)</option> 
    <option class="selectedoptions" value="7">Loki(7)</option> 
</select> 

我jQuery代碼是

 function removeSelected() { 
      var check = $(this).parent().attr('value'); 
      var parent = $(this).parent(); 
      $('#select2 option').each(function() { 
       if ($(this).attr('value') == check) { 
        $(this).remove().appendTo('#select1'); 
        parent.remove(); 
        return true; 
       } 
       return true; 
      }); 
      return true; 
     } 

當我調試代碼使用Firebug,我可以看到,對於較大的數字,「檢查」是0,&一些範圍較小的超過80億的返回隨機數字。對於較小的數字,它的工作完美

另外,如果我嘗試.VAL(),而不是.attr( '值')螢火顯示錯誤提前傢伙

TypeError: (c.value || "").replace is not a function 

感謝。

編輯1:好的。看來我動態添加List Item的jQuery代碼在列表Item中引入了隨機數作爲值。但問題仍然存在。我可以在創建列表項目時看到我的代碼(通過螢火蟲)添加適當的值,但生成的列表項目不反映它。

編輯2:對羅納爾德先生的迴應。對不起。需要一個上下文。我擁有的是以下內容。 2選擇元素「select1」&「select2」&無序列表「selectedlist」。用戶可以從「select1」中選擇選項&將其移至「select2」。 &「select2」選項將/應該反映爲「selectedlist」的列表項。我有一個函數removeSelected綁定到列表項中的圖像。

<li class="selectedlistItems" value="8123456789"> 
Joker(8123456789) 
<a class="search-choice-close" href="#"> </a> 
</li> 

現在在功能上,我試圖通過其選項具有相同的值,這個列表項有「選擇2」 &檢查的選項進行迭代。 「檢查」是列表項的「值」 &

$(this).attr('value') 

是「選擇2選項」值。 如果再匹配

$(this).remove().appendTo('#select1'); 

刪除「選擇2選項」 &追加到「選擇1」 其中作爲

​​

刪除列表項,使無序列表總是反映「選擇2 「元素。

我想這個上下文將足夠理解我正在嘗試做什麼。我是新來的jquery &一般我發貼的問題,我只是找到答案,這是我的第一個問題。我非常感謝這種快速反應。

編輯3:檢查此jsFiddle瞭解情況。 http://jsfiddle.net/ygaurav/vUgym/

+0

我無法在OSX上的Firefox 12中複製此內容。 – Alnitak

+2

['.attr()'和'.val()'可以很好地處理大值](http://jsfiddle.net/mdWfJ/1/)。 –

回答

0

這是因爲,當您將它分配給<li>元素的'value'屬性時,此'value'的類型爲'number'。這就是爲什麼它會導致溢出並且你得到一個垃圾值。

爲什麼不使用自定義屬性,我的意思是,而不是'value'使用一些其他的自定義屬性。防爆。說'toonId'

$('#list').append($("<li></li>").html(Joker(8123456789)'<a class=search-choice-close href=#></a>').attr('toonId', "8234567890")); 

當渲染這是怎麼會看:

<li class="selectedlistItems" toonId="8234567890">Joker(8123456789)<a class="search-choice-close" href="#"> </a></li> 

這將一個新的屬性添加到<li>項目,只要你願意,你可以稍後訪問'toonId'屬性。

希望這會有所幫助。

+0

謝謝TON !!我知道它必須是整數/數值,但我無法讓它工作。這實際上解決了2件事,賦予了更有意義的自定義屬性。 – GauravY

0

attr()絕對適用於大數字,因爲它只是返回一個字符串。

我在jsfiddle上試過你的代碼。當然,它缺少一些細節,所以我只是創造性地添加了它。然後我修復了一些看起來不正確的代碼。無論如何,它現在正在工作。

http://jsfiddle.net/QA5nk/1/

的更改包括以下幾行:

var check = $(this).attr('value'); // instead of looking for the parent 
... 
// parent.remove(); // this line is removing what is already removed 

您嘗試刪除兩次的東西,這也讓頁面炸燬,所以我評論說出來。

+0

我認爲我想要做的事情有一點必要。我編輯了我的問題。但是,我已經感謝你如此快速的迴應先生。 – GauravY

+0

不,它不明確。你甚至沒有'select2' HTML元素。所以它仍然很不清楚你想要什麼。嘗試將你的代碼放入jsfiddle中,以便更好地瞭解所有存在的HTML元素。 – ronalchn

+0

這裏的情況。如果你使用它。你可以看到2,3選項正在工作,但不適用於具有更大數值的蝙蝠俠。 您可以雙擊select1中的選項將它們移動到選擇2,然後單擊應用以反映對選定列表的更改。點擊列表項的右上角(圖像是空的,但你可以懸停看到裏面的錨) http://jsfiddle.net/ygaurav/vUgym/ – GauravY