2012-10-03 80 views
2

HTML獲得股利VAL()輸入改爲

<div>my content of the div1 
    <input/> 
</div>​ 

<div>my content of the div2 
    <input/> 
</div>​ 

<div>my content of the div3 
    <input/> 
</div>​ 

JS

$('input').on('change',function(){ 
    var x = $('this').parent('div').val(); 
    alert(x); 
})​​​; 

我的問題是,爲什麼我不能得到其中輸入被更改div的內容?

+3

'val()'是表單字段。你在尋找'html()'嗎? –

回答

2

修正後的腳本

$('input').on('change',function(){ 
    var x = $(this).parent('div').html(); 
    alert(x); 
})​​​; 
  • val()是表單字段只
  • this不應該被引用。

替代

如果你只希望父的文字,你可以使用text()。但是,瀏覽器可能會有不同的實現方式(請參閱notes here)。在這種情況下,它可能是更清潔包你想要的內容在其他元素,如:

<div> 
    <span>my content of the div1</span> 
    <input/> 
</div>​ 

並使用腳本,如:

$('input').on('change',function(){ 
    var x = $('this').siblings("span").html(); 
    alert(x); 
})​​​; 
6

你需要傳遞的this值,而不是字符串「本」,到了jQuery,並調用.text()得到一個元素的文本內容,而不是.val()(其獲得的輸入元素的值):

$('input').on('change',function(){ 
    var x = $(this).parent('div').text(); //`text` method gets contents of div 
    //  ^no quotes around `this` 
    alert(x); 
})​​​; 
2

您可以使用.html()創建div的內容,而不是使用.val()方法。 .val()方法主要用於獲取表單元素的值,如input,select和textarea。 有關詳細信息,請參閱here

1

變化$('this')變爲$(this)。 (刪除引號)。

1

.val()對於其他標籤不存在,而不是select/input/textarea標籤。 我建議您使用.text()函數或.html(),具體取決於您想要檢索的內容。

1

你的代碼應該是這樣的

$('input').on('change',function(){ 
    var x = $(this).parent('div').text(); 
// OR var x = $(this).parent('div').html(); 
    alert(x); 
})​​​; 
1

使用這個

$('input').bind('keyup',function(){ 
alert($(this).parent().html()); 
})