2015-11-05 139 views
0

我是克隆div #Play_Start并在它下面我有事件隐藏/显示,特别是在每个克隆的div内发生。但在克隆上只有第一个div事件起作用。克隆Div和事件处理程序显示/隐藏

事件:从下拉列表中选择PLAY,Div hide。

我想在每个div上触发事件并在相同的克隆div内。

我拨弄链接http://jsfiddle.net/kgm50e43/

var count = 1; 
 

 
function clone() { 
 
    if (count < 5) { 
 
    $(this).parents("#Play_Start").clone() 
 
     .appendTo("#Clone_Play") 
 
     .on('click', 'button.clone', clone) 
 
    count++; 
 
    } else {} 
 
} 
 
$("button.clone").on("click", clone); 
 

 
function InputDropDown() { 
 
    var MainNav = $('#Inputs-Control').val(); 
 
    if (MainNav == 1) { 
 
    alert('hi'); 
 
    $('#Play_Start').children('.IconTest').hide(); 
 
    }; 
 
}
.clone { 
 
    display: block; 
 
    background-color: red; 
 
    padding: 10px; 
 
} 
 
.clonedInput { 
 
    position: relative; 
 
    overflow: hidden; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="Play_Start" class="col s12 l12 m12 First_sec clonedInput"> 
 
    <div class="col s3 l3 m3 input-field"> 
 
    <input type="text" id="tpOne" class="timepicker" placeholder="Start"> 
 
    </div> 
 

 
    <div class="col s2 IconTest"> 
 
    asd 
 
    </div> 
 

 
    <div class="col s2 input-field"> 
 
    <select id="Inputs-Control" class="form-control" name="article()" onchange="InputDropDown();"> 
 
     <option value="0">Select</option> 
 
     <option value="1">Play</option> 
 
     <option value="2">Change</option> 
 
     <option value="3">Pause</option> 
 
     <option value="4">Stop</option> 
 
     <option value="5">If</option> 
 
    </select> 
 
    </div> 
 
    <div class="col s2 m2 l2"> 
 
    <button class="clone btn-floating btn-small waves-effect waves-light red counter_start_btn" onclick="clone();"> 
 
     <i class="material-icons">add</i> 
 
    </button> 
 

 
    </div> 
 
    <div id="Clone_Play"></div>

+0

我不能正确理解你的问题,你说的克隆事件发生后没有被炒鱿鱼吗?什么是你面对你的小提琴代码的问题? –

+0

是,克隆事件后不克洛克ned事件。如果您在下拉菜单中选择播放,我会隐藏div。这在其他克隆的div上不起作用。 – Vinayak

+0

让我试试并找回你 –

回答

0

检查了这一点

https://jsfiddle.net/kgm50e43/1/

$(document).on('click', 'button.clone', clone); 
$(document).on('change', '.form-control', function() { 
    console.log($(this).val()) 
    var MainNav = $('.form-control').val(); 

    if (MainNav == 1) { 
     alert('hi'); 
     $('#Play_Start').children('.IconTest').hide(); 
    }; 
}); 

这是你所需要的。

我在你的代码中发现的问题:

$( '#输入 - 控制')VAL()

ID选择仅适用,如果你有在页面上的一个ID,它应该是这样的。如果没有,你应该使用类。

的$(document)。在(“变”,“.FORM制”

而且你应该尝试绑定与上述类似,我通常遵循,因为它的工作原理,甚至会元素可用的未来。

希望它能帮助。

+0

它只隐藏第一个div ASD,其中它应该隐藏你选择的div内的ASD元素下拉菜单。所以基本上$(this)或.parent()可能工作? – Vinayak

+0

我不明白你的问题Vinayak,你想隐藏什么。如果你隐藏父母,它的所有孩子也会被隐藏起来。 –