簡體   English   中英

從類找到的元素中獲取元素類型

[英]get element type from element found by class

我試圖創建一個函數,該函數將獲取具有特定類的任何類型的任何元素的“值”(textarea,span等)

為此,我需要測試我當前正在處理哪種元素,可以使用alert($('#gdocDump').prop('tagName'));輕松地完成該操作alert($('#gdocDump').prop('tagName')); 但是由於某種原因,如果我使用var varElems=$(".feedback");獲取同一類的所有元素, 然后嘗試遍歷它們,像var elementType = elem.prop('tagName'); ,出現錯誤“ TypeError:elem.prop不是函數”

  1. 為什么會這樣?
  2. 顯然,由$(“。feedback”)創建的jQuery對象中存儲的元素與分別查看每個元素不太一樣嗎?
  3. 對於var elementType = elem.prop('tagName');我需要更改什么? 在下面正常工作?

jsFiddle: 測試場

HTML

<textarea id="gdocDump" class="feedback area" rows="1" cols="22" ></textarea><br />
<input id="scaleSlider" class="feedback" type="range"value="1" min="1"  max="9" step="1"/><br />
<span id="command1" class="feedback">This is a span</span><br />
<span id="command2" class="feedback">This is a span</span><br /><br />
<input type="button" id="sendFeedback" value="Feedback"/><br /><br /><br /><br />
<input type="button" id="test" value="Test a specific element"/>

使用Javascript:

$("#sendFeedback").click(function() {
        composeAndCallEmail();
});


$("#test").click(function() {
        alert($('#gdocDump').prop('tagName'));
});



function composeAndCallEmail() {
    var varElems=$(".feedback");
    var feedback=[];
    $(varElems).each(function(index, element) {
        feedback.push(getElemContents(element))
    });
}

function getElemContents(elem){
    var elementType = elem.prop('tagName');
    //this is where the problem occurs
    if(elementType=='INPUT')return elem.val();
    //... will add more here later
}

each(index, element)內部each(index, element)參數是index和本機DOM元素

$(varElems).each(function(index, element) { 
    feedback.push(getElemContents(element)) // plain DOM element, not jQuery
});

這意味着您必須重新包裝它或使用本機elem.tagName屬性

function getElemContents(elem){
    var elementType = $(elem).prop('tagName');
    if ( elementType.toLowerCase() === 'input' )
           return $(elem).val();
}

如上所述,您正在DOM節點上調用jQuery方法prop() 而是使用elem.tagName

同樣,在getElemContents() ,應使用.value而不是.val() 最后,這應該給您:

function getElemContents(elem){
    var elementType = elem.prop.tagName;
    if(elementType=='INPUT')return elem.value;
    //... will add more here later
}

JS小提琴演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM