2011-04-16 47 views
11

tôi có một danh sách các liên kết mở trong một iframe, như:jQuery "sau khi nhấp vào" sự kiện

Tôi cần cập nhật div khác sau vào liên kết được nhấp. Cụ thể, tôi cần gọi hàm kiểm tra thuộc tính src của khung và cập nhật div. Nếu tôi thực hiện:

$("#frameTrigger a").click(function() { 
    var iframe = $("iframe[name=iframe1]").get(0); 
    console.log(iframe.contentWindow.location.href); 
    // the problem here is that that the iframe.window.location will 
    // change AFTER this function returns 
}); 

Tôi không nhận được những gì được mong đợi.

+2

Nếu liên kết chuyển sang tên miền khác với tên miền của bạn, bạn sẽ không thể kéo SRC. – Khez

+2

'$ (" # frameTrigger ")' bạn đang thiếu # ... chỉ trong trường hợp – Rafay

+0

@Khez: bạn nói đúng, bây giờ tôi thấy vấn đề và do đó phải sửa lại câu hỏi. –

Trả lời

9

Tôi đoán bạn nhận được giá trị cũ thay vì giá trị mới? Bạn có thể muốn bọc chức năng của mình trong một setTimeout trong 1ms để cho phép cập nhật đi qua.

+0

Trong trường hợp cụ thể này, thời gian chờ lâu hơn (500ms) là cần thiết. –

2
$("#frameTrigger a").click(function(){ 
    console.log($(this).attr("href")); 
}); 

Bạn cần bộ chọn đầu tiên để làm việc với các nhấp chuột cho liên kết. Ngoài ra, tôi nghĩ rằng bạn đã có cú pháp cho console.log không chính xác (mặc dù tôi chưa bao giờ sử dụng nó). Tôi đã thay đổi nó vì vậy khi bạn nhấp vào một liên kết, nó sẽ ghi lại thuộc tính href của liên kết. Hi vọng điêu nay co ich.

0

Nếu bạn gặp sự cố với toàn bộ chức năng nhấp chuột hoàn thành khi gọi nhấp qua jQuery .click() - Tôi biết nó không lý tưởng, nhưng - có lẽ bạn nên chỉ cần jQuery hoàn thành một cách rõ ràng chuỗi sẽ được thực hiện khi đã nhấp. Một cái gì đó như:

$("#someElement").bind('click', function(event) { 
    event.preventDefault(); 
    $($("#frameTrigger a:eq(1)").attr('target')).attr('src', $("#frameTrigger a:eq(1)").attr('href')); 
}); 
Các vấn đề liên quan