2013-02-14 84 views
0

我遇到了一些我寫的jQuery代碼的問題。錯誤的輸入字段被點擊按鈕刪除

似乎上頁2輸入域被刪除通過按鈕意味着上除去輸入字段。我該如何解決這個問題?這裏是jsFiddle上的my code - 嘗試在上添加新的輸入字段,然後使用上的刪除按鈕Page 1。有趣的是,似乎無法反過來。這裏是我的代碼:

$(document).ready(function() { 
    $('#add_roomFac').click(function() { 
     var $objs = $('select[name*=roomFac]'); 
     var n = $objs.size() + 1; 
     var $obj = $objs.first().clone(); 
     $obj.attr('name', 'roomFac' + n).attr('id', 'roomFac' + n); 
     $obj.appendTo($('#search_fac')); 
    }); 

    $('#remove_roomFac').click(function() { 
     var $objs = $('select[name*=roomFac]'); 
     if ($objs.size() > 1) { 
      $objs.last().remove(); 
     } 
    }); 

    $('#addFac').click(function() { 
     var $objs = $('select[name*=request_roomFac]'); 
     var n = $objs.size() + 1; 
     var $obj = $objs.first().clone(); 
     $obj.attr('name', 'request_roomFac' + n).attr('id', 'research_roomFac' + n); 
     $obj.appendTo($('#request_fac')); 
    }); 
    $('#removeFac').click(function() { 
     var $objs = $('select[name*=request_roomFac]'); 
     if ($objs.size() > 1) { 
      $objs.last().remove(); 
     } 
    }); 
}); 

回答

3

當你使用('select [name * = roomFac]');您選擇兩個下拉菜單因爲您正在使用包含選擇器。嘗試使用選擇開始('select [name^= roomFac]');

[http://jsfiddle.net/eyecode/psL2s/2/][1]

1

你需要有更多的背景與你選擇的目標正確的元素:

​​

工作小提琴here

0

您需要每頁的div來限制您的選擇器相對於單擊的元素。 $(這)是點擊按鈕,然後.closest上升尋父頁面,然後潛水回落發現,頁面上的選擇框:

http://jsfiddle.net/psL2s/11/

$('#remove_roomFac').click(function() { 
    var $objs = $(this).closest('.page').find('select[name*=roomFac] option'); 
    if ($objs.size() > 1) { 
     $objs.last().remove(); 
    } 
}); 

你可以改變事件,以便它適用於這兩個按鈕,並將此類放在按鈕上: $('.remove_option').click(function() {

這允許您通過向元素添加類而不是在JS中硬編碼ID來創建行爲。