我有一個應用程序,它的多個實例存在於同一個頁面中。我在應用程序中使用input
來顯示相應數據的一種幻燈片放映。然而,label
和input
僅適用於頁面中的一個實例。所以如果在頁面中有相同應用程序的實例,則只有第一個可以工作。爲什麼只有一個複選框實例工作如果有多個
這裏是一個演示:JSFiddle
$.fn.MP = function(options) {
var settings = $.extend({
// These are the defaults
text: ""
}, options);
$(this).on("click tap", "input", function() {
$(this).parent().siblings().find("input").prop("checked", false);
});
};
$("#item1").MP({});
$("#item2").MP({});
input[type="checkbox"] {
position: absolute;
opacity: 0;
}
.panelTop > div div {
display: none;
}
.panelTop > div input[type="checkbox"]:checked ~ div {
display: block;
}
.panel {
width: 400px;
height: 100px;
border: 1px solid black;
}
.panel > .panelTop {
width: 100%;
height: 49px;
border-bottom: 1px dashed black;
}
.panel > .panelBottom {
width: 100%;
height: 50px;
}
.panel > .panelTop > div div {
width: 24px;
height: 24px;
float: right;
margin: 0px 9px 0 0;
border: 1px dashed black;
}
.panel > .panelBottom > div {
width: 32px;
height: 32px;
float: right;
margin: 9px 9px 0 0;
border: 1px solid black;
text-align: center;
font-size: 22px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="panel" id="item1">
<div class="panelTop">
Dependant Buttons:
<div>
<input id="box-1" type="checkbox" checked>
<div>1.1</div>
<div>1.2</div>
<div>1.3</div>
</div>
<div>
<input id="box-2" type="checkbox">
<div>2.1</div>
<div>2.2</div>
<div>2.3</div>
</div>
<div>
<input id="box-3" type="checkbox">
<div>3.1</div>
<div>3.2</div>
<div>3.3</div>
</div>
</div>
<div class="panelBottom">
Main Buttons:
<label for="box-1" class="btn1">1</label>
<label for="box-2" class="btn2">2</label>
<label for="box-3" class="btn3">3</label>
</div>
</div>
<div class="panel" id="item2">
<div class="panelTop">
Dependant Buttons:
<div>
<input id="box-1" type="checkbox">
<div>1.1</div>
<div>1.2</div>
<div>1.3</div>
</div>
<div>
<input id="box-2" type="checkbox">
<div>2.1</div>
<div>2.2</div>
<div>2.3</div>
</div>
<div>
<input id="box-3" type="checkbox">
<div>3.1</div>
<div>3.2</div>
<div>3.3</div>
</div>
</div>
<div class="panelBottom">
Main Buttons:
<label for="box-1" class="btn1">1</label>
<label for="box-2" class="btn2">2</label>
<label for="box-3" class="btn3">3</label>
</div>
</div>
所以你可以在演示中看到,有應用程序的兩個實例,點擊1, 2 or 3
的按鈕,使得變化的即使您點擊第二個實例也是第一個實例。
我想使每個實例正常工作,並且每個單選按鈕只有在按下時才起作用。
有什麼想法?
ID應該永遠是獨一無二的,從不重複。 –
也會在'return this.each(function(){/ * click code * /})中包裝那個點擊代碼',你可以組合你的選擇器和調用插件一次 – charlietfl
@DrydenLong感謝您的評論。那麼我正在尋找一種更加動態的方法。由於它是主要應用程序的一部分,並且不清楚將創建多少個實例,因此在每種情況下分配一個唯一標識符不是很簡單/高效。 – DannyBoy