2013-12-16 45 views
-1

我有基於JS和jQuery的Web應用程序的問題。一般來說,我在網站上點擊了觸發JavaScript功能的按鈕,點擊。在這個函數中還有兩個其他函數,我將它們稱爲Foo和Bar。 Foo使用數據創建動態html表,並且Bar想從此表中獲取一些數據。它看起來是這樣的:Javascript和jQuery:追加一個項目並獲得訪問它

function Click(){ 
    Foo(); 
    Bar(); 
} 
function Foo(){ 
    $("#someDiv").append("html table"); 
} 
function Bar(){ 
    var x = $("#selector_from_added_table").val(); 
} 

我以前VAL故意 - 表中有幾個輸入領域。我的問題很簡單:變量x調用序列Foo()Bar()未定義。但是當我打電話酒吧()裏面Foo(),x得到適當的價值。但這種解決方案是不可接受的,因爲我必須撥打Bar()幾次。

+2

是'Foo'做出一個Ajax請求,以獲得新的HTML的價值?如果是這樣的話:http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call。 –

+2

我不明白這個問題。 – kapa

回答

0

更新小提琴:http://jsfiddle.net/eBn9v/3/

將在Foo()一個回調函數,這樣當你在酒吧()訪問元素,你確信元素沒有退出在DOM

HTML:

<div id="someDiv"></div> 
    <div id="someOtherDiv"> 
     click me 
    </div> 

jQuery的

$(document).ready(function() { 
    Click(); 
}); 

    function Click() { 
    Foo(function() { 
     Bar(); 
    }); 
} 

function Foo(callback) { 
    $("#someDiv").append("<table><tr><input type='text' value='Hello World' class='hi' /></tr></table>"); 
    callback(); 
} 


function Bar() { 
    var x = $('.hi').val(); 
    alert(x); 
    } 

$('#someOtherDiv').on("click", function() { 
    Bar(); 
}); 

所以現在,當創建動態表,一個someDiv裏面,你可以從#someOtherDiv調用BAR()方法,並顯示從textbox其退出在someDiv

+0

這是一個答案?我只看到一段代碼。你想在這裏傳達什麼?請解釋你的答案。 –

+0

好吧,他想調用BAR()方法並從動態添加的文本框中獲取值..所以他現在可以從任何地方調用BAR()並獲取值...首先,我做了我能從他的問題中理解的內容... –

+0

這和OP已經有什麼不同? –