简体   繁体   English

如何从html调用嵌套的jquery函数?

[英]how to call a nested jquery function from html?

I am calling a addtext() function from html onclick() that is nested inside add() function. 我正在从嵌套在add()函数内部的html onclick()调用addtext() add()函数。 I want to call the second function. 我想调用第二个函数。 How can i approach this? 我该如何处理?

Here i have a link with add() function that shows a textbox and an ADD button with addtext() . 在这里,我有一个与add()函数的链接,该链接显示了一个文本框和一个带有addtext()ADD按钮。 The add() function checks for text and if text is present, it generates a new text box. add()函数检查文本,如果文本存在,它将生成一个新的文本框。 Now i want the add button to take that text and from the textbox and set it in replacement of the textbox. 现在,我希望添加按钮从文本框中获取该文本,并将其设置为替换文本框。 clicking the ADD button will take it to addtext() which is inside the add() function. 单击“ ADD按钮会将其带到位于add()函数内部的addtext()

Html code: HTML代码:

     <a id = "newcard" href="#" onclick="add()" >
            <b style ="color: #444444">Add Card...</b>
     </a>

     <div>
          <span id = "show-ta"><textarea id="txtarea" style =" 
      display:none"></textarea><span>
          <span id = "newbutton"><button id = "firstbutton" class ="btn btn-
      success nbutton"onclick="addtext()" style ="display:none">Add</button>
          </span>
     </div>

Jquery code: jQuery代码:

     function add(){
      var newTextBoxDiv = $(document.createElement('textarea'));
      if ( $('#txtarea').css('display') == 'none' ){
    $('#txtarea').css('display', 'block');
       }
      if ( $('#firstbutton').css('display') == 'none' ){
    $('#firstbutton').css('display', 'block');
       }
      var wrapper = $('#show-ta');
      var button = $(document.createElement('button'));

    if(wrapper.find('textarea').last().val().length) {
       var x =wrapper.find('textarea').last().val();
        function addtext()
        {

        }
        wrapper.append('<textarea class="t-one"></textarea>');
        wrapper.append('<button class ="btn btn-success 
   nbutton">Add</button>').appendTo('#cardarea').insertAfter('#cardtitle');;
        //button.addClass("btn btn-success");
        wrapper.appendTo("#cardarea").insertAfter('#cardtitle');
        wrapper.addClass('t-one');
       // var text =$('textarea:nth-last-child(2)').val().length;

        //wrapper.addClass('nbutton');
    }

You have to assign the nested function to a property like this addText.add = add; 您必须将嵌套函数分配给诸如addText.add = add;这样的属性addText.add = add; then you can call that function in onClick event. 那么您可以在onClick事件中调用该函数。

 function addText() { // irrelevant code here function add(arg){ console.log( arg ); } addText.add = add; } addText(); 
 <button onclick="addText.add('Nested function')">Click me</button> 

EDIT: 编辑:

Updated the snippet as per your code 根据您的代码更新了代码段

 function add() { var newTextBoxDiv = $(document.createElement('textarea')); if ($('#txtarea').css('display') == 'none') { $('#txtarea').css('display', 'block'); } if ($('#firstbutton').css('display') == 'none') { $('#firstbutton').css('display', 'block'); } var wrapper = $('#show-ta'); var button = $(document.createElement('button')); if (wrapper.find('textarea').last().val().length) { var x = wrapper.find('textarea').last().val(); function addtext() { alert('working'); } add.addtext = addtext; wrapper.append('<textarea class="t-one"></textarea>'); wrapper.append('<button class="btn btn-success nbutton ">Add</button>').appendTo('#cardarea').insertAfter('#cardtitle');; wrapper.appendTo("#cardarea").insertAfter('#cardtitle'); wrapper.addClass('t-one'); } } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <a id="newcard" href="#" onclick="add()"> <b style="color: #444444">Add Card...</b> </a> <div> <span id="show-ta"> <textarea id="txtarea" style ="display:none"> </textarea> </span> <span id="newbutton"> <button id = "firstbutton" class ="btn btn-success nbutton" onclick="add.addtext()" style="display:none">Add </button> </span> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM