是否可以使用jquery .on()方法而不是.delegate()没有要监听的事件?
根据.on()文件:
.on(events [,selector] [,data],handler(eventObject))
该events参数是不可选的.
使用.on()/ .delegate()是动态添加元素.
我有一个简单的形式,每行包含3个输入字段.在其中一个领域,我使用jscolor.js(字段有一个class="color"因此绑定JS).
但是,当我使用jQuery添加新行时delegate(),输入字段不绑定JS,并且不存在预期的功能.http://jsfiddle.net/alexwald/qARzP/
<script>
var line = '<li class="form_line" id="line">
<span>
<label for="item">Item:</label>
<input type="text" required="required" placeholder="what item is this?" id="item" name="item[]>
</span>
<span>
<label for="amount">Amount: </label>
<input required="required" type="number" id="amount" name="amount[]>
</span>
<span>
<label for="color">Color: </label>
<input type="text" required="required" class="color {pickerClosable:true, hash:true ,pickerFace:3,pickerBorder:0}" id="color" name="color[]">
</span>
</li>';
$(document).ready(function() {
$("form").delegate(".add", "click", function(){
$('ul').append(line);
}); // end of adding
}); //end of main func
</script>
Run Code Online (Sandbox Code Playgroud)
我认为问题出在:
line变量,或.delegate,所以它应该是别的而不是form......?任何帮助非常感谢.
我在我的代码中使用委托 jquery,但是当它触发某个事件时,它会触发不止一次,我知道这是因为我已经将optionclicked类的事件绑定到了box-main类,但我处于必须这样做的情况将这些类相互绑定,因为使用optionclicked类的内容是动态生成的。是否有问题的解决方案,以便事件仅触发一次意味着它调用一次函数并显示一次弹出操作并发布一次数据等。
$('.boxes-main').on('click', '.optionclicked', function(){
// do something
var timetoclick = parseFloat($('#time').text());
clearInterval(myCounter);
var optionclicked = $(this).attr('data');
var questionid = $(this).attr('data2');
$.post("quesanscheck.php", {
ans : optionclicked,
id : questionid,
time : timetoclick
}, function(data, status) {
alert(data);
if(data == optionclicked)
{
//alert("dfad");
setTimeout(function(){ rightans(); }, 1000);
}
else
{
// wrong ans red
if(optionclicked == 'A')
{
document.getElementById('op1').style.background = "red";
document.getElementById('op1').style.border = "0px";
}
if(optionclicked == 'B')
{
document.getElementById('op2').style.background = "red";
document.getElementById('op2').style.border = "0px"; …Run Code Online (Sandbox Code Playgroud) 我有以下动态 HTML行.
<tr role="row" class="odd">
<td contenteditable="false" class="sorting_1"> </td>
<td contenteditable="false"> <span class="name">Alex Nilson </span></td>
<td contenteditable="false"><span class="price"> 1234 </span></td>
<td contenteditable="false"> <span class="qty" >1234 </span></td>
<td><button class="pr_edit" href="javascript:;"> Edit </button></td>
<td><button class="pr_elete" href="javascript:;"> Delete </button></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
当单击编辑按钮时,我需要将该特定行的单元格元素的值转换为jQuery,作为JS变量,我可以将AJAX POST到另一个PHP页面以插入到数据库中.我尝试像下面这样做,但它没有成功.
$(document).ready(function () {
$('.pr_edit').click(function () {
var currentTD = $(this).parents('tr').find('td');
$.each(currentTD, function () {
var iname = $(this).find("span.name").html();
var iprice = $(this).find("span.price").val();
var iqty=$(this).find("span.qty").val();
});
Run Code Online (Sandbox Code Playgroud)
它没有按照我的意图捕获变量.我如何实现这一目标?我需要将这些SPAN数据转换为三个变量.