2013-09-26 70 views
0

這將是對你最沒有道理的,但我不能跟蹤或認爲做什麼來解決這個問題,我有。看看這裏FIDDLE編輯現有輸入.VAL(),而不影響其它輸入VAL()的

在這個函數應該修改輸入的值,而只發送到輸入,它在我的代碼el就像是指所有被點擊的元素。

我認爲的代碼說明我的角度,生病粘貼一些jQuery的這裏,如果你需要更多的只是問問。

var app = { 

sendEditDataToApp: function (el) { 

    //Type of element to send 
    var elType = jQuery(el).prev().attr('name') 

    //Element data 
    var elVal = jQuery(el).prev().val() 

    //Match the edit element with the element constructor 
    var inConstructor = jQuery(el).closest('.display-data').prev() 

    inConstructor.addClass('opened') 

    //Send to app 
    jQuery('.builder .send').click(function() { 

     //Set new data input value 
     jQuery(el).parent().find('input').val(inConstructor.find(this).prev().val()) 
     alert(inConstructor.find(this).prev().val()) 

     inConstructor.removeClass('opened') 

    }); 


} 

} 

jQuery('.open').click(function(e) { 
    e.preventDefault() 
    app.sendEditDataToApp(this) 
}) 

HTML:

<div class="builder"> 
    <input value="" /> 
    <button class="send">Send</button> 
</div> 

<div class="display-data"> 
<div class="row"> 
<input name="html" value="input 1" /> 
<button class="open">Open</button> 
</div> 

<div class="row"> 
<input name="html" value="input 2" /> 
<button class="open">Open</button> 
</div> 

<div class="row"> 
<input name="html" value="input 3" /> 
<button class="open">Open</button> 
</div> 
</div> 

我的代碼是獲取輸入的.val(),我不知道爲什麼它添加到所有的輸入時,我想用thisel只提及具體輸入點擊來自。

你要知道,我改寫了這個代碼,以滿足更好的小提琴,它基於對我真正的代碼邏輯,一些被複制,並從我真正的代碼粘貼,大多數被重新編輯。主要目標是編輯打開的點擊來自的特定輸入。

我要說的重點,主要就是jQuery(el).parent().find('input').val(inConstructor.find(this).prev().val())

(警告:這可能是一個不正確的說法,我的邏輯在這裏)el指的是第一要素.open,並this.send。我發現其中.open點擊來自特定的輸入,然後設置值是什麼是根據的this.send點擊inConstructor值內。所以對我來說應該得到的輸入值,並將其放置在特定jQuery(el).parent().find('input') < - 不是所有的都被點擊了那些的。

+0

我想我知道現在該做什麼。我需要添加一個活動類。並將其發送到活動輸入。 –

+0

好吧,我知道了..寫那小提琴,問這肯定讓我更好地分析代碼..我需要添加類像'.edit',然後而不是'jQuery(el).parent'我會寫這個'jQuery (el).closest('。edit')'就像一個魅力 –

+1

這是一個解決方案,而不是解決您的問題。問題是,多次點擊就會觸發太多事件。 –

回答

0

嘗試了這一點:

var app = { 

    sendEditDataToApp: function (el) { 

     //Type of element to send 
     var elType = jQuery(el).prev().attr('name') 

     //Element data 
     var elVal = $(el).prev().val() 

     //Match the edit element with the element constructor 
     var inConstructor = $(el).closest('.display-data').prev() 

     inConstructor.addClass('opened') 

     //Send to app 
     $('.builder .send').click(function (ev) { 
      //Set new data input value 
      $(el).parent().find('input').val(inConstructor.find(this).prev().val()) 
      alert(inConstructor.find(this).prev().val())    
      inConstructor.removeClass('opened'); 
      $(this).unbind('click'); 
      return false; 

     }); 


    } 

} 

jQuery('.open').click(function(e) { 
    e.preventDefault(); 
    e.stopImmediatePropagation(); 
    app.sendEditDataToApp(this); 
    return false; 
}) 

Fiddle