gidzior
gidzior

Reputation: 1805

how to combine those functions

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

Answers (3)

abuduba
abuduba

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

David Hellsing
David Hellsing

Reputation: 108500

.replace() takes a Regular Expression, so you can do something like:

this.id.replace(/c_[0-9]{1,2}_/, "");

Upvotes: 0

user657496
user657496

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

Related Questions