2013-10-02 20 views
0

我刪除海峽,在我自己的網站,有些鏈接到RSS種子的......這樣的:jQuery的 - 添加/上變化

ALL 
example.com/rss 

NEWS 
example.com/rss?type=1 

ARTICLES 
example.com/rss?type=2 

在同一頁我要插入一些過濾器...所以我有一個選擇:

<select class="rss-list-platform"> 
<option value="">All</option> 
<option value="1">Xbox</option> 
<option value="2">PlayStation</option> 
</select> 

我要尋找一個jQuery代碼,將增加「&平臺= VAL」原來的鏈接,但是,如果選擇「全部」選項挑...如果有的話,我們應該刪除「& platform = val」。

目前我有下面的代碼,但它不斷添加遍及文本...並不刪除它。

$(".rss-list-platform").change(function(){ 

     var ref_this = $(this); 
     var original_str = ""; 

     $(".rss-list input").each(function(){ 

      original_str = $(this).val(); 
      add_str = original_str + "&platform=" + ref_this.val(); 

      $(this).val(add_str); 
     }); 

    }); 

回答

1

我會看看serialize()並嘗試使用它。它是爲你正在努力完成的事情而建立的。代碼將如下所示:

var url = "http://your.site/something"; 

$(".rss-list-platform").change(function() { 
    var params = $("#id-of-form").serialize(); 
    $("#id-of-tag-containing-url").text(url + "?" + params); 
} 

您需要爲選擇標記添加一個名稱才能使其工作。

serialize()方法可以處理form和input/select/textarea標記。所以如何使用它的另一個例子是$(「:input」)。serialize()。也許這在你的場景中更容易。

+0

你能解釋一下嗎?嘗試序列化()選擇$(「。rss-list-platform」)。serialize()不會輸出任何內容。 – user2840318

+0

我更新了你的jsfiddle,所以它使用了serialize()。看看它,希望你會發現它有用! http://jsfiddle.net/PMCWw/2/ – Streamside

1

運行快速檢查你添加前:

original_str = this.value 
    add_str = original_str + "&platform=" + ref_this.val(); 
    var check_str = "&platform=" + ref_this.val(); 
    if (this.value.indexOf(check_str) > -1) { 
     //string is already there! 
    } else { 
     $(this).val(add_str); 
    } 

,並刪除它,裏面的change

if (this.value == 1) { //1 is for All 
    $(".rss-list input").each(function(){ 
     var index = this.value.indexOf("&platform="); 

     //remove it if it exists 
     if (index > -1) this.value = this.value.substring(0, index); 
    }); 
} 
+0

剛剛嘗試過。不工作。出於某種原因,不斷添加文本... – user2840318

+0

@ user2840318 - 只是edite,d再試一次 – tymeJV

+0

不知道如果我做對了......但它不起作用。我已經將它全部添加到jsfiddle中...可以檢查它並告訴我如何,請嗎?這裏:http://jsfiddle.net/q3MUn/1/ – user2840318