Вызов функции с параметром в Jquery (по клику)

мне нужно вызвать функцию sendData, когда я нажимаю кнопку X у меня проблема с "" и '' не знаю, как правильно вызвать функцию

любая помощь

var txt1 = $(this).val() ;  
var txt2 = $('<button type = "button" id = "'+txt1+'" class = "myButton"> '+txt1+' <button type = "button" onclick='sendData(txt1)'>X</button> </button>');

$("p").append(txt2);   // Append new elements  

Спасибо

Не используйте встроенный JS. Вместо этого вы можете просто проверить всплывающее событие клика из .myButton. Если вы все еще хотите использовать встроенный JS, это должно сработать: onclick = "sendData(' + txt1 + ')"

Terry 25.02.2019 11:36

Вы использовали одинарные кавычки вокруг sendData(txt1), что означает, что он находится за пределами строки. Вероятно, вы хотели использовать двойные кавычки, чтобы код был частью строки.

Richard 25.02.2019 11:39

onclick = "отправитьДанные('+ txt1 +')"

digital-pollution 25.02.2019 11:44
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
632
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Генерируемый вами htmlстрока имеет неправильный формат. Попробуйте следующее:

var txt1 = 'test';  
var txt2 = $('<button type = "button" id = "'+txt1+'" class = "myButton"> '+txt1+' <button type = "button" onclick=sendData("'+txt1+'")>X</button> </button>');

$("p").append(txt2);

function sendData(data){
  alert(data);
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p></p>

Хотя я предпочитаю использовать Литералы шаблонов:

var txt1 = 'test' ;  
var txt2 = $(`<button type = "button" id = "${txt1}" class = "myButton"> ${txt1} <button type = "button" onclick='sendData("${txt1}")'>X</button> </button>`);

$('p').append(txt2);

function sendData(data){
  alert(data);
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p></p>

Вы пропустили одну кавычку вокруг своей функции sendData -

Ваш -

var txt2 = $('<button type = "button" id = "' + txt1 + '" class = "myButton"> ' + txt1 + ' <button type = "button" onclick='sendData(txt1)'>X</button> </button>');

Правильный -

var txt2 = $('<button type = "button" id = "' + txt1 + '" class = "myButton"> ' + txt1 + ' <button type = "button" onClick='+sendData(txt1)+'>X</button></button > ');

FYI. Чтобы избежать проблем с одинарными или двойными кавычками, вы можете использовать функцию литералов шаблонов ES6 -

var txt2 = $(`<button type = "button" id = "${txt1}" class = "myButton">${txt1}<button type = "button" onclick=${sendData(txt1)}>X</button> </button>`);

Что ж, вы можете использовать возвращаемое значение создания кнопки и добавить к ней обработчик событий, чтобы использовать его для пересылки ваших данных в функцию sendData.

const inputField = $('<input type = "text" />');
const button = $('<button type = "button">Submit</button>');
$(button).on('click', function() {
  sendData( inputField.val() );
});

function sendData( data ) {
  console.info( data );
}

$('#container').append( inputField ).append( button );
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id = "container"></div>
Try this

var txt1 = "a";  
      var txt2 = $('<button type = "button" id='+txt1+' class = "myButton"> '+txt1+' <button type = "button" onclick='+sendData(txt1)+'>X</button> </button>');
   $("p").append(txt2);   // Append new elements  
   
   function sendData(x)
   {
   console.info(x)
   }
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p></p>

Вы можете использовать обработчик события click, как показано ниже:

$(document).on("click", "#idOfButtonThatYouClicked" function() {
    //do stuffs or call other functions
    //var value = $("#someOtherPlace").value();
    //sendData(value);
});

Подробнее здесь: http://api.jquery.com/on/

Другие вопросы по теме