如何在jQuery中创建函数,调用它并将变量传递给它?这是Javascript风格:
<script type="text/javascript">
function popup(msg) {
alert(msg);
}
</script>
然后您只需在HTML中包含该事件:
<html>
<input type="submit" onclick="popup('My Message')" />
</html>
与此相关的jQuery是什么?从所有“新手”教程中,它们都是不接受变量的静态函数。例如:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('button').click(function() {
alert('hello, world');
});
});
</script>
我希望能够动态地包含不同的消息。上面的代码会影响所有按钮并吐出“hello,world”的相同消息。
答案 0 :(得分:16)
如果您希望消息是动态的,那么您将要使用data-attributes
:
<input class='message-button-' type="submit" data-message="My Message" />
然后在另一个javascript文件中:
// equivalent of $(document).ready(function(){...
$(function(){
// Functionality starts here
$('.message-button').on('click', function(e){
alert($(this).data('message'));
})
});
现在,只要单击具有类.message-button
的按钮,该函数就会执行,并且它将使用自定义属性数据消息来显示消息。
希望这有帮助! :)
更新
请注意,最好的做法是不加思索地执行javascript。有人提到仍然像你在你的例子中那样使用onclick
属性,不要这样做。像我在这里使用jquery的.on('click', function(){})
方法一样绑定事件。
如果您的点击项是锚标记<a>
,那么您可以使用e.preventDefault
阻止href被关注:
$('a').on('click', function(e){
e.preventDefault()
})
如果你需要知道,$('.message-button')
正在使用css选择器来获取dom元素。任何有效的CSS选择器通常都可以在那里工作。
<强>步骤一步强>
首先,我们需要将所有代码包装在jQuery提供的函数中,该函数等待文档准备好处理javascript操作和dom操作。长格式版本为$(document).ready(function(){ /* CODE GOES HERE */ })
,但我使用的版本是快捷$(function({ /* CODE GOES HERE */ })
:
$(function(){
})
接下来,我们需要将事件绑定到我们的按钮。由于我们已经给它了类.message-button
,我们可以使用jQuery来抓取该元素并将'click'事件绑定到它:
$(function(){
// Functionality starts here
$('.message-button').on('click', function(e){
// Code here executes when the input button is clicked
})
});
事件处理程序this
内部重新绑定,直接指向触发事件的HTML元素。包装$()使我们可以访问jquery方法。因此:$(this)经常使用。 jQuery为我们提供.data()
方法来访问元素上的任何data-*
方法,并为我们提供值,这是alert()
正在做的事情。
$(function(){
// Functionality starts here
$('.message-button').on('click', function(e){
alert($(this).data('message'));
})
});
答案 1 :(得分:6)
这是我最好的方法,就像javascript:
<script>$(document).ready(function(){ popup=function(msg){ alert(msg); }}); </script>
您无需更改正文中的代码
<html> <input type="submit" onclick="popup('My Message')" /> </html>
以下是示例http://jsfiddle.net/PLnF3/
<html> <input type="submit" onclick="alert('My Message')" /> </html>
您不需要任何javascript或jQuery来执行此操作,只需在按钮上使用alert(“我的消息”)即可。样本http://jsfiddle.net/PLnF3/1/
此处示例http://howto.software-mirrors.com/2013/09/how-to-make-jquery-popup-window.html 这是代码:
<script> $(document).ready(function() { popup = function(msg) { $("<div>" + msg + "</div>").dialog(); } }); </script>
您无需更改身体上的html代码。
<html> <input type="submit" onclick="popup('My Message')" /> </html>
这里是示例http://jsfiddle.net/PLnF3/2/
请记住,为了能够使用jQuery对话框,您需要jquery.js,jquery-ui.js以及jquery.css主题。在http://howto.software-mirrors.com/2013/09/how-to-make-jquery-popup-window.html
了解更多信息答案 2 :(得分:4)
您可以为每个按钮指定不同的ID,如下所示:
<input type="submit" id="submit-something" onclick="popup('My Message')" />
然后:
$(document).ready(function() {
$('#submit-something').click(function() {
alert('My message');
});
});
此外,如果任务非常重复,您可以使用另一个函数来创建函数:
function messageHandler(message) {
return function() {
alert(message);
};
}
$(document).ready(function() {
$('#submit-something').click(messageHandler('My message'));
});
答案 3 :(得分:3)
您应该将消息存储在data-*
属性中:
<button data-message="Hi there!">...</button>
$('button').click(function() {
alert($(this).data('message'));
});
答案 4 :(得分:2)
$(document).ready(function() {
var message = "foo"; // You might need to move it to the global scope,
// denepends on what you want to do with it.
$('button').click(function() {
alert(message);
});
...
...
message = "hello world";
});
值得一说:
如何在jQuery中创建函数
没有这样的东西,在jQuery中创建一个函数。
答案 5 :(得分:1)
如果您绝对需要将数据存储在HTML代码中,那么数据属性是一个不错的选择:
<button class="alert" data-msg="My Message">Click me</button>
JavaScript的:
$(document).ready(function() {
$('button.alert').click(function() {
var msg = $(this).data('msg'); // access HTML attribute data-msg
alert(msg);
});
});
答案 6 :(得分:0)
一种解决方案:使用参数等属性。
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('button').click(function() {
alert($(this).attr("message"));
});
});
</script>
<button message="personal message 1">Botton 1</button>
<button message="personal message 1">Botton 2</button>
答案 7 :(得分:0)
我已经尝试了一些建议并且效果很好..
- html按钮
<input type="submit" value="Submit 1" class="message" data-message="Sample Message 1"/>
<input type="submit" value="Submit 2" class="message" data-message="Sample Message 2"/>
- 单击按钮上的jquery
$('.message').live('click', function(){
alert($(this).data('message'));
});
答案 8 :(得分:0)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>POS</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script>
function getUnitPrice(){
var item = document.getElementById('item').value;
if(item==0){
document.getElementById('unitprice').value = "36000.00";
}
if(item==1){
document.getElementById('unitprice').value = "2500.00";
}
if(item==2){
document.getElementById('unitprice').value = '14000.00';
}
if(item==3){
document.getElementById('unitprice').value = '40000.00';
}
if (item==" "){
document.getElementById('unitprice').value = '0';
}
}
function calcSubtotal(){
var qty = document.getElementById('quantity').value;
var price = document.getElementById('unitprice').value;
if(isNaN(qty)||isNaN(price)){
alert("Please enter valid values");
}
else{
var subtotal= eval(price) * eval(qty);
document.getElementById('subtotal').value = subtotal;
}
}
function calcDiscount(){
var discRate = document.getElementById('discountRate').value;
var discAmount = document.getElementById('subtotal').value;
if(isNaN(discRate)||isNaN(discAmount)){
alert("Please enter valid discount");
return;
}
if(discRate < 5 || discRate > 20 ){
alert("Please enter valid discount");
return;
}
var discount = eval(discAmount) * eval(discRate)/100;
document.getElementById('discountAmount').value = discount;
document.getElementById('total').value= discAmount - discount;
}
function calcBalance(){
var cash = document.getElementById('cash').value;
var total = document.getElementById('total').value;
if(isNaN(cash)){
alert("Enter valid amount");
return;
}
var bal = eval(total) - eval(cash);
document.getElementById('balance').value = bal;
}
</script>
</head>
<body class="container">
<div class="panel panel-primary" style="margin-top: 10px;">
<div class="panel-heading">
<p style="font-size: 36px; margin: 0;"><strong>Kumara Super Centre</strong></p>
<p style="font-size: 16px; margin: 0;">No. 300, Ja-ela Road, Gampaha. Tel: 033-2232526</p>
</div>
<div class="panel-body">
<table class="table table-hover">
<tr>
<th class="text-center">Item</th>
<th class="text-center">Quantity</th>
<th class="text-center">Unit Price</th>
<th class="text-center">Amount</th>
</tr>
<tr>
<td class="col-lg-5">
<select class="form-control" id="item" required onChange="getUnitPrice()">
<option value="">Select one</option>
<option value="0">Television</option>
<option value="1">FM Radio</option>
<option value="2">DVD Player</option>
<option value="3">Surround System</option>
</select>
</td>
<td class="col-lg-2">
<input class="form-control" type="number" value="0" id="quantity" name="quantity" required onKeyUp="calcSubtotal()" />
</td>
<td class="col-lg-2">
<input class="form-control" type="number" value="0" id="unitprice" name="unitprice" readonly />
</td>
<td class="col-lg-3">
<input class="form-control" type="number" value="0" id="subtotal" name="subtotal" readonly />
</td>
</tr>
</table>
<table class="table" style="float: right; width: 600px;">
<tr style="border:none">
<td class="text-center col-lg-3"><strong>Discount Rate (%)</strong></td>
<td class="col-lg-2"><input class="form-control" type="number" value="0" id="discountRate" name="discountRate" onKeyUp="calcDiscount()" /></td>
<td class="col-lg-3"><input class="form-control" type="number" value="0" id="discountAmount" name="discountAmount" readonly /></td>
</tr>
<tr style="border-top:none">
<td class="text-center"><strong>Total</strong></td>
<td></td>
<td><input class="form-control" type="number" value="0" id="total" name="total" readonly /></td>
</tr>
<tr style="border:none">
<td class="text-center"><strong>Cash</strong></td>
<td></td>
<td><input class="form-control" type="number" value="0" id="cash" name="cash" onKeyUp="calcBalance()" /></td>
</tr>
<tr style="border:none">
<td class="text-center"><strong>Balance</strong></td>
<td></td>
<td><input class="form-control" type="number" value="0" id="balance" name="balance" readonly /></td>
</tr>
</table>
</div>
</div>
</body>
</html>