簡體   English   中英

使用jQuery根據元素類型設置內容

[英]Set content based on element type with jquery

我正在嘗試創建一個函數,該函數可以設置HTML元素的內容(值或文本),而不必擔心元素的類型。 到目前為止,我已經做出了以下決定:

function setContent(elm, value){
    if(elm.is('[value]')){                           
        elm.val(value);
    }else{                                      
        elm.text(value);
    }
}

但是這里的問題是它不適用於select元素。 下面添加了有效的代碼段,您能否帶頭?

 $(document).ready(function(){ $('#setContent').on('click', function(){ $('#setElements').children().each(function( index ) { var newContent = $('#newContent').val(); setContent($(this), newContent ); }); }); }); function setContent(elm, value){ if(elm.is('[value]')){ elm.val(value); }else{ elm.text(value); } } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> Content: <input type="text" id="newContent" value="Two" /> <button id="setContent">Set Content</button> <hr /> Elemets to set contents: <div id="setElements"> <input type="text" value="This is a Text" /> <input type="hidden" value="This is a Hidden" /> <input type="button" value="This is a Button" /> <button>This is a Button2</button> <div>This is a DIV</div> <span>SPAN here</span> <p>Paragraph</p> <br> Not working on: <select> <option value="One">One</option> <option value="Two">Two</option> <option value="Three">Three</option> </select> </div> 

<select>需要附加一個新option 像這樣修改setContent()

function setContent(elm, value){
        if(elm.is('select') ){
            // empty element, and then append new option
            elm.empty().append( $('<option/>', { value: value, html:value }) );
        } else if(elm.is('[value]')){                           
            elm.val(value);
        }else{                                      
            elm.text(value);
        }
}

 $(document).ready(function(){ $('#setContent').on('click', function(){ $('#setElements').children().each(function( index ) { var newContent = $('#newContent').val(); setContent($(this), newContent ); }); }); }); function setContent(elm, value){ if(elm.is('select') ){ elm.empty().append( $('<option/>', { value: value, html:value }) ); } else if(elm.is('[value]')){ elm.val(value); }else{ elm.text(value); } } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> Content: <input type="text" id="newContent" value="Two" /> <button id="setContent">Set Content</button> <hr /> Elemets to set contents: <div id="setElements"> <input type="text" value="This is a Text" /> <input type="hidden" value="This is a Hidden" /> <input type="button" value="This is a Button" /> <button>This is a Button2</button> <div>This is a DIV</div> <span>SPAN here</span> <p>Paragraph</p> <br> Not working on: <select> <option value="One">One</option> <option value="Two">Two</option> <option value="Three">Three</option> </select> </div> 

您可以在if條件下將選擇器"[value], :has([value])" .is() "[value], :has([value])"傳遞給.is()

 $(document).ready(function() { $('#setContent').on('click', function() { $('#setElements').children().each(function(index) { var newContent = $('#newContent').val(); setContent($(this), newContent); }); }); }); function setContent(elm, value) { if (elm.is("[value], :has([value])")) { elm.val(value); } else { elm.text(value); } } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> Content: <input type="text" id="newContent" value="Two" /> <button id="setContent">Set Content</button> <hr />Elemets to set contents: <div id="setElements"> <input type="text" value="This is a Text" /> <input type="hidden" value="This is a Hidden" /> <input type="button" value="This is a Button" /> <button>This is a Button2</button> <div>This is a DIV</div> <span>SPAN here</span> <p>Paragraph</p> <br>Not working on: <select> <option value="One">One</option> <option value="Two">Two</option> <option value="Three">Three</option> </select> </div> 

請嘗試以下腳本

function setContent(elm, value) {
    if (elm.is('select')){
        elm.val(value);
    } else {
        if(elm.is('[value]')){                           
            elm.val(value);
        }else{                                    
            elm.text(value);
        }
    }
}

如下更改您的setContent函數,然后嘗試

function setContent(elm, value) {   
  var tag = elm[0].tagName;   
  if(['DIV','SPAN','BUTTON','P'].indexOf(tag) >= 0)
    elm.text(value);   
  else if(['INPUT','SELECT'].indexOf(tag) >= 0)
    elm.val(value);    
}

暫無
暫無

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

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