Reputation: 1805
there will be 14 similar functions and i need to combine it because those functions interact with each other, help me pls
$(".mieszkanie").click(function() {
var num = this.id.replace(/c_07_/, "").substr(0, 3);
$('.pdf').attr({
href: "img/rzuty/mieszkania/pietro07rzuty/" + num + ".pdf"
});
$('.karta img').attr({
src: "img/rzuty/mieszkania/pietro07rzuty/" + num + ".png",
alt: "mieszkanie" + num
});
});
$(".mieszkanie").click(function() {
var num = this.id.replace(/c_10_/, "").substr(0, 3);
$('.pdf').attr({
href: "img/rzuty/mieszkania/pietro10rzuty/" + num + ".pdf"
});
$('.karta img').attr({
src: "img/rzuty/mieszkania/pietro10rzuty/" + num + ".png",
alt: "mieszkanie" + num
});
});
HTML
<div id="div10p" class="okno clearfix rzutyWraper">
<h2>RZUT 10 PIĘTRA</h2>
<div id="rzuty10p" class="rzuty">
<span id="c_10_248" class="mieszkanie" title=""></span>
<span id="c_10_247" class="mieszkanie" title=""></span>
<span id="c_10_249" class="mieszkanie" title=""></span>
<span id="c_10_250" class="mieszkanie" title=""></span>
<span id="c_10_252" class="mieszkanie" title=""></span>
<span id="c_10_251a" class="mieszkanie" title=""></span>
<span id="c_10_251b" class="mieszkanie" title=""></span>
</div>
<div class="karta">
<div class="kartaPanel">
<button class="close">zamknij</button>
<a class="pdf" href="" onclick="this.target='_blank'">pobierz</a>
</div>
<img src="" alt="mieszkanie" />
</div>
</div>
<!-- PIETRO 07 -->
<div id="div07p" class="okno clearfix rzutyWraper">
<h2>RZUT 7 PIĘTRA</h2>
<div id="rzuty07p" class="rzuty">
<span id="c_07_001" class="mieszkanie" title=""></span>
<span id="c_07_002a" class="mieszkanie" title=""></span>
<span id="c_07_002b" class="mieszkanie" title=""></span>
<span id="c_07_003" class="mieszkanie" title=""></span>
<span id="c_07_004" class="mieszkanie" title=""></span>
<span id="c_07_005" class="mieszkanie" title=""></span>
<span id="c_07_006a" class="mieszkanie" title=""></span>
<span id="c_07_006b" class="mieszkanie" title=""></span>
<span id="c_07_008" class="mieszkanie" title=""></span>
</div>
<div class="karta">
<div class="kartaPanel">
<button class="close">zamknij</button>
<a class="pdf" href="" onclick="this.target='_blank'">pobierz</a>
</div>
<img src="" alt="mieszkanie" />
</div>
</div>
Upvotes: 0
Views: 164
Reputation: 5042
Check this regexp.
/.+_(\d+)_(.+)/.exec('c_10_249');
result will be
["c_10_249", "10", "249"]
And then only one callback for each elements having 'mieszkanie' class.
$(".mieszkanie").click(function() {
var nums = /._(\d+)_(.+)/.exec( this.id );
var num2 = nums[2].substr(0, 3);
$('.pdf').attr({
href: "img/rzuty/mieszkania/pietro"+nums[1]+"rzuty/" + num2 + ".pdf"
});
$('.karta img').attr({
src: "img/rzuty/mieszkania/pietro"+nums[1]+"rzuty/" + num2 + ".png",
alt: "mieszkanie " + num2
});
});
Upvotes: 1
Reputation: 108500
.replace()
takes a Regular Expression, so you can do something like:
this.id.replace(/c_[0-9]{1,2}_/, "");
Upvotes: 0
Reputation:
$(".mieszkanie").click(function() {
var num = this.id.substr(5, 8);
$('.pdf').attr({
href: "img/rzuty/mieszkania/pietro07rzuty/" + num + ".pdf"
});
$('.karta img').attr({
src: "img/rzuty/mieszkania/pietro07rzuty/" + num + ".png",
alt: "mieszkanie" + num
});
});
Based on your HTML, if your HTML is consistent, this will do for all, no regex needed.
Upvotes: 0