相关疑难解决方法(0)

动态创建元素的事件绑定?

我有一些代码,我循环遍历页面上的所有选择框,并将.hover事件绑定到它们,以便在它们的宽度上做一些麻烦mouse on/off.

这发生在页面准备就绪并且工作得很好.

我遇到的问题是,我在初始循环后通过Ajax或DOM添加的任何选择框都不会受到事件限制.

我找到了这个插件(jQuery Live Query Plugin),但在我用插件添加另外5k到我的页面之前,我想知道是否有人知道这样做的方法,无论是直接使用jQuery还是通过其他选项.

javascript jquery events unobtrusive-javascript

1677
推荐指数
21
解决办法
79万
查看次数

Jquery事件不适用于动态追加的元素

我正在尝试将新DOM对象附加到某个Div并且它可以工作,但不知何故 - 我为这些新附加对象编写的事件没有响应.这是为什么?

我在这里附上一个简单的例子:点击段落应该隐藏的任何段落.然而,对于使用.append添加的段落,它不起作用.

http://jsfiddle.net/xV3HN/

有我的代码:

$(document).ready(function(){

$("#add").click(function(){
     $("#containerDiv").append("<p> I should hide as well if you click me </p>");
  });

 $("p").click(function(){
     $(this).hide();
  });

});
Run Code Online (Sandbox Code Playgroud)

javascript jquery

13
推荐指数
2
解决办法
8505
查看次数

无法在jQuery中使用.click捕获<a>

为什么我不能抓住这个<a>......

<a href="javascript:void(0)" class="select2-choice select2-default" tabindex="-1">
   <span class="select2-chosen">select item</span>
   <abbr class="select2-search-choice-close"></abbr>
   <span class="select2-arrow">
      <b></b>
   </span>
</a>
Run Code Online (Sandbox Code Playgroud)

...用这个jQuery?

$(document).ready(function() {
     $( ".select2-choice" ).click(function() {
     alert( "Handler for .keydown() called." );
     });
});
Run Code Online (Sandbox Code Playgroud)

我认为这是产生下拉列表的功能:

        createContainer: function () {
        var container = $(document.createElement("div")).attr({
            "class": "select2-container"
        }).html([
            "<a href='javascript:void(0)' onclick='return false;' class='select2-choice' tabindex='-1'>",
            "   <span class='select2-chosen'>&nbsp;</span><abbr class='select2-search-choice-close'></abbr>",
            "   <span class='select2-arrow'><b></b></span>",
            "</a>",
            "<input class='select2-focusser select2-offscreen' type='text'/>",
            "<div class='select2-drop select2-display-none'>",
            "   <div class='select2-search'>",
            "       <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'/>",
            "   </div>",
            " …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

6
推荐指数
1
解决办法
1409
查看次数

追加后jquery事件无法正常工作

http://jsfiddle.net/YsnhT/2/

追加后Jquery事件开启不起作用.单击"保存"按钮后,我需要textarea的值.

$('.span8')
    .on('click',
            '.btn',
            function() {
        var input = $("#textarea").val();
        alert(input);
    });

$('body').on('click','#createNote',function() {                $('.span8').empty();
                $('.span8').append('<button type="button" class="btn" style="float: right; margin-right: 8px;background-color:#dddddd;font-family:Roboto Slab;color: black" id="save" data-loading-text="Saving...">Save</button><div class="hero-unit"><input type="text" style="width: 100%" id="title" placeholder="Title"/>'+ 
                '<textarea contenteditable="true" id="textarea" class="textarea" placeholder="Enter text ..."style="width: 100%;">dd</textarea></div>');

            });
Run Code Online (Sandbox Code Playgroud)

HTML:

<div class="span8"></div>
Run Code Online (Sandbox Code Playgroud)

javascript jquery

5
推荐指数
1
解决办法
1万
查看次数

使用jQuery动态添加'divs'

这是我写的脚本.第一个单击功能工作正常,但其他两个不能按预期工作.标签遵循href链接,其单击功能不起作用.是因为它们是由jQuery创建的,而不是在原始的html页面中?

$("#edit-description").click(function(){
    $("#add-description").replaceWith( "<div id='add-description'><textarea cols='43' rows='9' placeholder='Add a description...'></textarea><a href='#' class='u-update'>Update</a><a href='#' id='add-description-cancel'>Cancel</a></div>" );
    return false;
  }); 

  $("#add-description-cancel").click(function(){
    $("#add-description").replaceWith( '<div id="add-description">Write a <a href="/#" id="edit-description">description</a> about the college.</div>');
    return false;
  }); 

  $(".u-update").click(function(){
    $("#add-description").replaceWith( '<div id="add-description">Write a <a href="/#" id="edit-description">description</a> about the college.</div>');
    return false;
  }); 
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

5
推荐指数
1
解决办法
9003
查看次数

jQuery全局事件监听器

ttI有两个这样的功能:

function fn1() {
    $(".element").append("<div class='trigger'></div>");
}

function fn2() {
    $(".element").append("<div class='trigger'></div>");
}
Run Code Online (Sandbox Code Playgroud)

和一个听众:

$(".trigger").click(function() {
    // do some magic with $(this) element
});
Run Code Online (Sandbox Code Playgroud)

问题是如果click事件侦听器位于fn1和fn2之外,则它不会看到何时单击动态创建的元素(触发器).

如何让事件监听器全局监听?

javascript jquery

5
推荐指数
1
解决办法
6993
查看次数

jquery选择器在由ajax加载时找不到元素

当我<select id="myid" >从我的服务器加载来自ajax的Element时.这个选择器没有工作.但是,当我把这个代码放在html而不是由Ajax加载时,这个选择器运行良好......

$('#myid').change(function(){
  alert('OK!');
});

<select id="myid" >
 <option>1</option>
 <option>2</option>
 <option>3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

如何解决这个bug?

html javascript ajax jquery

4
推荐指数
1
解决办法
8257
查看次数

修改DOM后,jQuery选择器无法正常工作

我有一个选定的公司列表,如下所示:

<div id="selected_companies">
    <div class="company">
      <a>
        <div class="delete_company"></div>
        Company One
      </a>
    </div>
    <div class="company">
      <a>
        <div class="delete_company"></div>
        Company Two
      </a>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我希望在点击其中一家公司时将每个.companydiv "移动" 到一个单独的#deleted_companiesdiv中.我用jQuery做这个:

$('#selected_companies .company a').on('click', function (e) {
        /* Getting the company */
        var company_id = $(this).prev().prop('value');
        $('.form').append('<input type="hidden" name="deleted_companies[]" value="'+ company_id +'" />');

        var parent = $(this).parent();

        parent.appendTo('#deleted_companies');
        $('#deleted_companies').slideDown(300);
});
Run Code Online (Sandbox Code Playgroud)

当我点击其中一个公司时,.companydiv移动到所需的div(#deleted_companies),但是当我尝试在该div中达到它时,它没有按预期执行.例如,此代码不起作用:

$('#deleted_companies .company a').on('click', function (e) {
    alert('This should work.');
});
Run Code Online (Sandbox Code Playgroud)

那么如何使该警报工作?

javascript jquery dom-manipulation jquery-selectors jquery-events

3
推荐指数
1
解决办法
498
查看次数

jQuery:在ajax加载的元素上没有触发事件

我在jQuery/HTML5中有一个简单的前端(+后端生成的代码,它没有带来问题,所以我将省略它).当前使用的jQuery版本是1.8.3并且不存在版本冲突(即没有加载其他jQuery版本 - 它在其他系统中发生了很多次).

前端调用以下例程:

detailAjaxCall("\/client\/orders\/detailsLoad\/id\/3");

$(".upLink").click(function(){
    console.log("subiendo");
    var id = $(this).closest("tr").data('detail-id');
    var url = "\/client\/orders\/detailMoveUp" + "/id/" + id;
    detailAjaxCall(url);
    return false;
});

$(".downLink").click(function(){
    console.log("bajando");
    var id = $(this).closest("tr").data('detail-id');
    var url = "\/client\/orders\/detailMoveDown" + "/id/" + id;
    detailAjaxCall(url);
    return false;
});

$(".delLink").click(function(){
    console.log("borrando");
    var id = $(this).closest("tr").data('detail-id');
    var url = "\/client\/orders\/detailDelete" + "/id/" + id;
    detailAjaxCall(url);
    return false;
});
Run Code Online (Sandbox Code Playgroud)

注意:url字符串没有格式错误.它们是由json导出器生成的(这一段代码是从view sourceGoogle Chrome浏览器中的选项中提取的).评估它们中的任何一个都将返回一个没有反斜杠的字符串.

detailAjaxCall("/client/orders/detailsLoad/id/<number>")实际工作:它返回预期的JSON代码,当我打的网址,并呈现此时,相应的表项:

function detailAjaxCall(url)
{
    $.get(
        url,
        {},
        function(data, status, xhr) {
            //todo refrescar(data); …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery

2
推荐指数
1
解决办法
1027
查看次数

jQuery单击函数不在类上工作

所以我有一堆我想要点击的游戏.如果我向按钮添加一个单击功能,我会得到所需的结果,但是当我将它添加到游戏块类时,它无法工作.

这是一个在jsfiddle上正常工作的例子,但是当我在我的脚本中使用它时不是这样:http: //jsfiddle.net/sLt7C/

这是我想在我的页面上做的事情:

$('.gamePiece').click(function(){
    $('.gamePiece').addClass("toggled");
});
Run Code Online (Sandbox Code Playgroud)

这不起作用,但如果我将标识符切换到页面上的按钮,它确实有效:

$('#btn_AddClass').click(function(){
    $('.gamePiece').addClass("toggled");
});
Run Code Online (Sandbox Code Playgroud)

什么可能导致这失败?

不确定这是否会对导致其失败的因素产生任何影响,但"游戏片段"是单击"新游戏"按钮后生成的跨度元素.

这是一个小提示,显示更多代码http://jsfiddle.net/sLt7C/4/

进一步澄清:

这不起作用

$('.gamePeice').click(function(){
    $(this).addClass("toggled");
});
Run Code Online (Sandbox Code Playgroud)

这有效

$('#btn_addClass').click(function(){
    $('.gamePeice').addClass("toggled");
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery

2
推荐指数
2
解决办法
6703
查看次数